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>

问题是,所有数据表都使用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用于调试的目的获得了正确的输出。)

你能帮我解决这个问题吗?

我在 Tomcat 6 上使用 JSF Mojarra 2.1.1 和 PrimeFaces 3.2。

4

2 回答 2

4

您需要将 p:column 用于 datalist 的内容,如用户指南中所述。

于 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 回答