首页 文章

当标准JSF组件呈现正常时,PrimeFaces组件不会显示

提问于
浏览
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 .

我究竟做错了什么?

2 回答

  • -1

    因此, <p:xxx> 标签根本没有被解析为JSF标签,并且在生成的HTML输出中显得简单 . 这可能有以下一个或多个原因:

    • 您忘记在视图中声明 p: XML命名空间,或者您使用了错误的命名空间URI . 它应该是:
    xmlns:p="http://primefaces.org/ui"
    
    • 您忘记实际安装PrimeFaces库 . 它应该是一个问题

    一个 . 在webapp的 /WEB-INF/lib 文件夹中删除 primefaces.jar .

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

  • 2

    要向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.xhtml 来正确渲染JSF的输出 .

    如果您使用 /yourpage.xhtml ,您将看到奇怪的输出 .

相关问题