2010-11-02 11 views
1

Je le code suivantjsf ui: répéter et en utilisant la valeur de ligne comme un identifiant

  <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> 

Le code HTML généré pour chaque ligne est la suivante:

<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> 

Dans la sortie de l'ID de la table est vide pour chaque ligne: id="monitorFrm:j_id392:0:tbl_"

Existe-t-il un moyen d'utiliser dynamiquement #{custRow.id} comme ID pour la table?

Ou existe-t-il un autre moyen de le faire?

Répondre

1

Si je comprends bien, vous devez utiliser cette table Id du côté client par Javascript ...

Si oui, vous pourriez peut-être utiliser le varStatus de ui: répéter au lieu de l'Id, et utiliser cette variable id comme l'élément DIV:

<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> 

et si vous avez besoin d'un accès au client, vous pouvez appeler la DIV et obtenir l'enfant ...

+0

Salut, merci! J'ai utilisé ton idée et ça marche pour moi. Je l'utilise dans le but suivant: il y a une sélection de toutes les cases à cocher par client pour sélectionner toutes les commandes. De cette façon, en utilisant JQuery, j'obtiens la table à l'intérieur de la div ayant l'identifiant sélectionné et je mets/désactive toutes les cases à cocher pour chaque ligne. La beauté est que dans le bean, le setter pour chaque est également défini. Je ne le savais pas. – Guus

+0

varStatus ne fonctionne que dans jsf 2.0, pas dans jsf 1.2. :( –