我有一个每个客户的可计费服务列表,我正在尝试建立一个表,用户可以选择实际收费的表:
<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都使用由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。
答案 0 :(得分:4)
您需要使用p:列作为用户指南中记录的datalist内容。
答案 1 :(得分: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>