2012-09-06 106 views
1

我在我的应用程序中使用Primefaces 3.3.1,JSF 2.0和Liferay 6.0。我已经包含在portal_normal.vm我的JS文件如下Primefaces 3.3.1和JSF 2.0

portal_normal.vm

<html class="#language("lang.dir")" dir="#language("lang.dir")" lang="$w3c_language_id"> 

<head> 
    <title>$the_title - $company_name</title> 
     <script src="$javascript_folder/jquery-1.7.2.min.js"></script> 
     <script src="$javascript_folder/javascript.js"></script> 
     <script src="$javascript_folder/jquery.tablesorter.min.js"></script> 
     <script src="$javascript_folder/jquery.tablesorter.pager.js"></script> 
     <script src="$javascript_folder/jquery.autocomplete.js"></script> 
     <script src="$javascript_folder/jquery.simplemodal.1.4.2.min.js"></script> 
     <script src="$javascript_folder/jquery.scrollTo.js"></script> 
     <script src="$javascript_folder/ui.datepicker.js"></script> 


    $theme.include($top_head_include) 
</head> 
<body></body> 
</html> 

sample.xhtml:

<div xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui" 
    lang="en" xml:lang="en" style="padding-bottom: 8px;"> 
    <h:head> 
     <script type="text/javascript" src="#{lookupBean.themePath}/js/jquery-1.7.2.min.js" /> 
     <script type="text/javascript" src="#{lookupBean.themePath}/js/javascript.js" /> 
     <script type="text/javascript" src="#{lookupBean.themePath}/js/jquery.tablesorter.min.js" /> 
     <script type="text/javascript" src="#{lookupBean.themePath}/js/ui.datepicker.js" /> 
    </h:head> 
     <h:body></h:body> 
</div> 

总理面临要求H:头是包括在视图中。当我将h:头添加到我的xhtml时,没有任何js文件正在导入。你能不能让我知道如何将.js添加到h:head?

回答

0

JSF 2期望所有的资源下的webapp定位 - 资源

这里,你可以把你的脚本。您可能希望创建一个名为“脚本”子文件夹,然后使用这个标签:

<h:outputScript library="js" name="common.js" /> 

全程导游在这里:

http://www.mkyong.com/jsf2/how-to-include-javascript-file-in-jsf/

编辑:是你的观点确实需要命名空间。试试这个标题:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:p="http://primefaces.org/ui" xmlns:o="http://omnifaces.org/ui"> 
+0

我已经给我的xhtml原来的职位,我已经包括所有的命名空间。 – Sri

+0

@Sri你试过我关于h:outputScript的建议吗? –

4

的portal_normal.vm文件被设计为门户页面模板,包含Liferay的主题中。您不需要将任何PrimeFaces或jQuery相关资源添加到此模板的头部分。相反,只需在Facelet视图中创建一个PrimeFaces portlet并使用h:head即可。如果你这样做了,那么PrimeFaces会在JSF生命周期中自动添加所需的资源,Liferay Faces Bridge将负责将它们注入到门户页面的<主管> ... < /主管>部分。我建议你看看primefaces3-portlet演示了解更多信息。

+0

我刚刚试过,只有在也存在的情况下才适用。它是否应该没有? –

+0

我认为h:head和h:body标签应该出现在每个JSF视图中。 –