0

クライアントごとに請求可能なサービスのリストがあり、ユーザーが実際に請求するサービスを選択できるテーブルを作成しようとしています。

<p:dataList value="#{billController.billings}" var="billings">
    <p:dataTable value='#{billings.billablesDataModel}' var='item' selection="#{billings.toBill}">
        <f:facet name="header"> 
            <h:outputText value="#{billings.client.id}" />
        </f:facet>

        [...]

    </p:dataTable>
</p:dataList>

問題は、すべてのdataTableがj_idt9:j_idt13:0:j_idt14JSFによって自動的に割り当てられる同じID属性()でレンダリングされることです。これが原因で選択が機能しないのではないかと思います。(バッキングBeanbillings.toBillは更新されません/空のままです。)

dataTable私はこのように手動でID属性を設定しようとしていました:

<p:dataTable id="#{billings.client.id}" ...>

ただし、次のエラーが発生します。

java.lang.IllegalArgumentException: Empty id attribute is not allowed

(デバッグ目的で#{billings.client.id}から正しい出力を取得するため、確実に一意のクライアントのIDに設定されます。)h:outputText

これを修正するのを手伝ってもらえますか?

Tomcat6でJSFMojarra2.1.1とPrimeFaces3.2を使用しています。

4

2 に答える 2

4

ユーザーガイドに記載されているように、データリストのコンテンツにはp:columnを使用する必要があります。

于 2012-04-25T14:51:40.273 に答える
0

billController.billings経由ui:repeatではなく経由でループした場合はどうなりp:dataListますか?

<ui:repeat var="billings" value="#{billController.billings}">
    <p:dataTable value="#{billings.billablesDataModel}" var="item" selection="#{billings.toBill}">
        [...]
    </p:dataTable>
</ui:repeat>
于 2012-04-24T10:47:10.647 に答える