1

Java EE6/CDI JSF2 Primefaces 3.3.1。我创建了一个搜索页面,其中包含一些用于生成搜索结果表的级联下拉列表如果我使用 jsf:

<h:dataTable  var="_employeeVList" value="#{employeeVProducer.employeeVList}"  rendered="#{not empty employeeVProducer.employeeVList}"> 
    <f:facet name="header">  
        Employee Search Results 
    </f:facet>
    <h:column>
        <f:facet name="header">Area</f:facet>
        <h:outputText value="#{_employeeVList.areaName}" />
    </h:column>
    ...
</h:dataTable>

表格呈现输出,html 看起来很正常。但是当我改为primefaces时:

<p:dataTable  var="_employeeVList" value="#{employeeVProducer.employeeVList}"  rendered="#{not empty employeeVProducer.employeeVList}"> 
    <f:facet name="header">  
        Employee Search Results 
    </f:facet>
    <p:column>
        <f:facet name="header">Area</f:facet>
        <h:outputText value="#{_employeeVList.areaName}" />
    </p:column>
    ...
</p:dataTable>

表不显示。当我用 firebug 查看源代码时,我发现 html 有点奇怪:

    <table id="searchForm:results">
    <tbody>
    <tr>
    <td>
    <p:datatable rendered="true" value="[com.raytheon.myPkg.EmployeeV@f486,                                 com.raytheon.myPkg.EmployeeV@88fe,                              com.raytheon.myPkg.EmployeeV@adaf, 
                                          ...
                                com.raytheon.myPkg.EmployeeV@6a5b]" 
var="_employeeVList">
    <p:column></p:column>
    <p:column></p:column>
    ...                          
    </p:datatable></td>
    </tr>
    </tbody>
    </table>

对象在标签标签中,列是空的。在页面的其他地方,我正在使用 p:panelGrid,它包含下拉列表并且可以正确显示。

我的默认模板页面中有 h:head 和 h:body。

该表由有状态的请求范围 bean 支持。

我没有使用任何外部 JavaScript。

我究竟做错了什么?

4

2 回答 2

2

因此,这些<p:xxx>标记根本没有被解析为 JSF 标记,并且在生成的 HTML 输出中显示为普通的普通标记。这可能有以下一个或多个原因:

  1. 您忘记p:在视图中声明 XML 命名空间,或者您使用了错误的命名空间 URI。它应该是:

    xmlns:p="http://primefaces.org/ui"
    
  2. 您忘记实际安装 PrimeFaces 库。这应该是一个问题

    一个。放入webappprimefaces.jar/WEB-INF/lib文件夹中。

    湾。确保您的依赖管理器(例如 Maven)已配置为将 PrimeFaces 添加到项目并将其添加到运行时/WEB-INF/lib文件夹

于 2012-08-30T16:30:19.167 回答
-1

将另一个原因添加到 BalusC 的列表中:

如果您不将 servlet URL 映射添加到您的 URL,您将得到奇怪的输出并且 JSF 不会解析您的 XHTML 页面!

例如,如果您在 web.xml 中有以下 URL 映射:

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>

您应该使用/faces/yourpage.xhtmlJSF 正确呈现输出。

如果你使用/yourpage.xhtml你会看到奇怪的输出。

于 2012-08-30T20:11:18.623 回答