【发布时间】:2012-04-24 10:15:45
【问题描述】:
我有每个客户的可计费服务列表,我正在尝试构建一个表格,用户可以在其中选择哪些服务应该实际计费:
<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>
问题在于,所有数据表都使用由 JSF 自动分配的相同 ID 属性 (j_idt9:j_idt13:0:j_idt14) 呈现。我怀疑这导致选择不起作用。 (支持 bean billings.toBill 未更新/保持为空。)
我试图像这样手动设置dataTable 的 ID 属性:
<p:dataTable id="#{billings.client.id}" ...>
但是,我收到以下错误:
java.lang.IllegalArgumentException: Empty id attribute is not allowed
(#{billings.client.id} 绝对设置为唯一客户端的 ID,因为我从 h:outputText 获得正确的输出以用于调试目的。)
你能帮我解决这个问题吗?
我在 Tomcat 6 上使用 JSF Mojarra 2.1.1 和 PrimeFaces 3.2。
【问题讨论】:
标签: jsf jsf-2 primefaces facelets mojarra