2010-11-02 20 views
1

我有以下代碼JSF UI:重複,並使用行值作爲ID

  <ui:repeat value="#{monitorForm.customerList}" var="custRow"> 
       <h:outputText value="#{custRow.name}"/><br/>  

       <rich:dataTable id="tbl_#{custRow.id}" var="row" value="#{custRow.orderList}"> 
        <!-- show sales orders --> 
       </rich:dataTable> 
      </ui:repeat> 

爲每一行生成的HTML是:

<table cellspacing="0" cellpadding="0" border="0" id="monitorFrm:j_id392:0:tbl_" class="rich-table "> 
     <colgroup span="0"></colgroup><tbody id="monitorFrm:j_id392:0:tbl_:tb"></tbody> 
</table> 

在輸出表的ID是每行爲空:id="monitorFrm:j_id392:0:tbl_"

有沒有辦法動態使用#{custRow.id}作爲表的id?

或者還有其他方法可以做到這一點嗎?

回答

1

如果我理解,你需要使用表ID由JavaScript中的客戶端...

如果是的話,也許你可以使用UI的varStatus:重複,而不是身份證,並使用該變量作爲DIV元素的ID:

<ui:repeat value="#{monitorForm.customerList}" var="custRow" varStatus="st"> 
      <h:outputText value="#{custRow.name}"/><br/>  

      <div id="#{st.index}"> 
        <rich:dataTable var="row" value="#{custRow.orderList}"> 
        </rich:dataTable> 
      </div> 

如果你需要從客戶端訪問,你可以調用DIV,並得到孩子......

+0

您好,感謝!我用你的想法,它爲我工作。我將它用於以下目的:每個客戶都有一個全選複選框來選擇所有銷售訂單。這種方式使用JQuery我得到的表格中的div具有選定的ID和設置/取消設置每行的所有複選框。美的是,在bean中,每個的setter也被設置。我不知道。 – Guus 2010-11-02 11:19:07

+0

varStatus僅適用於jsf 2.0,不適用於jsf 1.2。 :( – 2011-09-28 03:34:24