2010-11-02 1 views
1

я следующий кодпользовательского интерфейса JSF: повторить и используя значение строки в качестве идентификатора

  <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="monitorFrm:j_id392:0:tbl_"

Есть ли способ использовать динамическое использование #{custRow.id} как идентификатор таблицы?

Или есть другой способ сделать это?

ответ

1

Если я понимаю, что вам нужно использовать этот идентификатор таблицы на стороне клиента с помощью Javascript ...

Если да, может быть, вы могли бы использовать varStatus УИ: повторить вместо Id, и использовать эту переменную а идентификатор элемента 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> 

и если вам нужен доступ от клиента вы могли бы назвать DIV и завести ребенка ...

+0

Привет, спасибо! Я использовал вашу идею, и она работает для меня. Я использую его для следующих целей: флажок «Выбрать все» для каждого клиента для выбора всех заказов на продажу. Таким образом, используя JQuery, я получаю таблицу внутри div, имеющую выбранный идентификатор, и устанавливает/отменяет все флажки для каждой строки. Красота заключается в том, что в компоненте также установлен установщик для каждого . Я этого не знал. – Guus

+0

varStatus работает только в jsf 2.0, а не в jsf 1.2. :( –

Смежные вопросы