クライアントごとに請求可能なサービスのリストがあり、ユーザーが実際に請求するサービスを選択できるテーブルを作成しようとしています。
<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_idt14
JSFによって自動的に割り当てられる同じ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を使用しています。