1

Java EE6 / CDI JSF2Primefaces3.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つ以上ある可能性があります。

  1. ビューでXML名前空間を宣言するのを忘れたp:か、間違った名前空間URIを使用しました。そのはず:

    xmlns:p="http://primefaces.org/ui"
    
  2. PrimeFacesライブラリを実際にインストールするのを忘れました。それはどちらかの問題でなければなりません

    a。primefaces.jarwebappの/WEB-INF/libフォルダにドロップします。

    b。依存関係マネージャー(Mavenなど)がPrimeFacesをプロジェクトに追加し、ランタイム/WEB-INF/libフォルダーに追加するように構成されていることを確認します

于 2012-08-30T16:30:19.167 に答える
-1

BalusCのリストにもう1つの理由を追加するには:

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 に答える