2012-04-24 44 views
0

我對每個客戶計費服務的列表,我試圖建立一個表格,用戶可以選擇哪些將實際結算:JSF 2:重複的ID內的號碼:DataList控件

<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使用JSF鑽嘴魚科2.1.1和3.2 PrimeFaces 6

回答

4

您需要請使用P :用戶指南中記錄的datalist內容列。

+0

這對我工作在類似的問題。將列添加到DataList(不是我認爲還需要列的示例中使用的DataTable)。但是,就我所知,在DataList部分的任何地方,用戶指南中都沒有提及它。 – 2012-04-26 10:40:31

+0

優秀,這工作!我跟隨了p:列丟失的datalist展示示例。我也無法在用戶指南中找到它。反正,非常感謝你! – jfs 2012-04-27 10:30:07

0

如果遍歷通過ui:repeat,而不是通過billController.billingsp:dataList

<ui:repeat var="billings" value="#{billController.billings}"> 
    <p:dataTable value="#{billings.billablesDataModel}" var="item" selection="#{billings.toBill}"> 
     [...] 
    </p:dataTable> 
</ui:repeat> 
+0

ui:重複提供完全相同的結果。 – jfs 2012-04-24 17:05:21