【问题标题】:Primefaces 3.3.1 and JSF 2.0Primefaces 3.3.1 和 JSF 2.0
【发布时间】:2012-09-06 18:42:03
【问题描述】:

我在我的应用程序中使用 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 中?

【问题讨论】:

    标签: jsf-2 primefaces liferay-6


    【解决方案1】:

    portal_normal.vm 文件被设计为门户页面的模板,并包含在 Liferay 主题中。您不需要将任何 PrimeFaces 或 jQuery 相关资源添加到此模板的 head 部分。相反,只需创建一个 PrimeFaces portlet 并在您的 Facelet 视图中使用 h:head。如果您这样做,那么 PrimeFaces 将在 JSF 生命周期中自动添加所需的资源,Liferay Faces Bridge 将负责为您将它们注入到门户页面的

    ... 部分。我建议您查看primefaces3-portlet 演示以了解更多信息。

    【讨论】:

    • 我刚刚尝试过,只有当 也存在时它才对我有用。如果没有 也可以吗?
    • 我认为 h:head 和 h:body 标签应该出现在每个 JSF 视图中。
    【解决方案2】:

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

    【讨论】:

    • 我已将我的 xhtml 提供给包含所有命名空间的原始帖子。
    • @Sri 你试过我关于 h:outputScript 的建议了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 2011-04-21
    • 2012-09-06
    • 1970-01-01
    • 2012-01-01
    • 2012-08-22
    • 1970-01-01
    相关资源
    最近更新 更多