Primefaces 3.3.1和JSF 2.0

时间:2012-09-06 18:42:04

标签: jsf-2 primefaces liferay-6

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

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>

Prime面需要h:head才能包含在视图中。当我将h:head添加到我的xhtml时,没有导入任何js文件。能告诉我怎样才能将.js添加到h:head?

2 个答案:

答案 0 :(得分:5)

portal_normal.vm文件旨在作为门户网站页面的模板,并包含在Liferay主题中。您不需要将任何PrimeFaces或jQuery相关资源添加到此模板的head部分。相反,只需创建一个PrimeFaces portlet并在Facelet视图中使用h:head。如果你这样做,那么PrimeFaces将在JSF生命周期中自动添加所需的资源,Liferay Faces Bridge将负责将它们注入&lt; head&gt; ...&lt; / head&gt;门户网站页面的一部分。我建议您查看primefaces3-portlet演示以获取更多信息。

答案 1 :(得分:0)

JSF 2期望所有资源都位于webapp - resources

在这里你可以放置你的脚本。您可能想要创建一个名为“scripts”的子文件夹,然后使用此标记:

<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">