0

我正在尝试将 primefaces 合并到我的 JSF 2.0 Web 项目中。

我最近从 facelets 1.x 更新到 2.0 并将 primefaces jar 添加到我的库文件夹中。一切都很好,除了我构建模板的方式与primefaces冲突。

我的template.xhtml看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0     Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

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

<h:head>
    <title><ui:insert name="title">MILO</ui:insert></title>

    //Css   
    //js        

</h:head>

<h:body class="milo">
    <h:form styleClass="miloForm" enctype="multipart/form-data">
        <div id="container">
                <ui:insert name="header">
                    <ui:include src="/WEB-INF/templates/header.xhtml"/>
                </ui:insert>

              <ui:insert name="content">
                    <!--  include your content file or uncomment the include below and create content.xhtml in this directory -->
              </ui:insert>

              <ui:insert name="footer">
                <ui:include src="/WEB-INF/templates/footer.xhtml"/>
              </ui:insert>          </div>
    </h:form>
</h:body>

我的index.xhtml 看起来像这样:

<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">

<ui:composition template="/WEB-INF/templates/base.xhtml">

<ui:define name="content">

         <p:editor/>        
</ui:define>

一旦我有了这个, p:editor 就不会出现。任何想法为什么?控制台不会显示任何警告/错误。

编辑>>> 发现 JS 错误

在此处输入图像描述

4

1 回答 1

4

在您的template.xhtml中,您需要替换 <head>by<h:head><body>by <h:body>。你不应该添加另一个,这只会导致无效的 HTML。

特别是这<h:head>是强制性的,因为它允许 PrimeFaces 等组件库通过资源依赖注入自动包含必要的 CSS/JS 文件。仅当您有带有 a的元素<h:body>时才强制使用,以便它们将自动重新定位到生成的 HTML元素的最底部。<h:outputScript>target="body"<body>


更新您的具体问题是由手动加载的 jQuery 库和 PrimeFaces 自动包含的库中的冲突引起的。PrimeFaces 在幕后使用 jQuery 和 jQuery UI。如果您坚持使用 PrimeFaces,我建议您放弃手动加载的 jQuery 并改用 PrimeFaces 捆绑的。要覆盖不使用 PrimeFaces 组件的页面,您可以通过将以下行添加到每个页面显式加载 PrimeFaces 捆绑的 jQuery <h:head>

<h:outputScript library="primefaces" name="jquery/jquery.js" />
于 2012-04-05T23:57:34.053 回答