2012-08-30 54 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