2012-08-30 52 views
1

Java EE6/CDI JSF2 Primefaces 3.3.1。我创建了一个搜索页面与被使用的。如果我使用JSF生成搜索结果的表几级联的下拉列表:PrimeFaces组件不会在标准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> 

该表不显示。当我用萤火虫看到源代码时,我看到一些奇怪的html:

<table id="searchForm:results"> 
    <tbody> 
    <tr> 
    <td> 
    <p:datatable rendered="true" value="[[email protected],         [email protected],        [email protected], 
              ... 
           [email protected]]" 
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

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

  1. 你忘了申报p: XML命名空间中的观点,或者你使用了错误的命名空间URI。它应该是:

    xmlns:p="http://primefaces.org/ui" 
    
  2. 你忘了实际安装PrimeFaces库。它应该是或者是

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

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

+0

doh,命名空间是我检查的第一件事 - 显然不够接近。 Thanx @BalusC – gebuh

+0

不客气。 – BalusC

-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.xhtml由JSF正确渲染输出。

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

+0

确实,但在OP的特殊情况下,''工作,所以我抓住了这种可能性:) – BalusC