Вам не нужно это делать.JSF делает это для вас.Просто укажите фиксированный идентификатор, если он находится в той же области.
<rich:dataGrid value="#{all}" var="item" columns="3">
<h:outputLabel value="#{item.name}" for="item" />
<h:selectBooleanCheckbox value="#{item.selectedForLaterUse}" id="item" />
</rich:dataGrid>
JSF сгенерирует соответствующий HTML соответственно.Откройте страницу в браузере, щелкните правой кнопкой мыши и сделайте Просмотр источника , чтобы увидеть ее самостоятельно.Сгенерированные идентификаторы HTML-элементов в данном конкретном случае состоят из всех родительских NamingContainer
компонентов и индекса текущего элемента.
Вот пример сгенерированного вывода при условии, что вы даетевсе компоненты NamingContainer
имеют фиксированный идентификатор, например <h:form id="form">
и <rich:dataGrid id="grid">
(в противном случае JSF будет автоматически генерировать идентификаторы, такие как j_idt1
и т. д., что также будет работать отлично, но не сразу для чтения):
<table id="form:grid" class="rf-dg">
<tbody id="form:grid:dgb" class="rf-dg-body">
<tr class="rf-dg-r">
<td class="rf-dg-c">
<label for="form:grid:0:item">one</label>
<input id="form:grid:0:item" type="checkbox" name="form:grid:0:item" />
</td>
<td class="rf-dg-c">
<label for="form:grid:1:item">two</label>
<input id="form:grid:1:item" type="checkbox" name="form:grid:1:item" />
</td>
<td class="rf-dg-c">
<label for="form:grid:2:item">three</label>
<input id="form:grid:2:item" type="checkbox" name="form:grid:2:item" />
</td>
</tr>
</tbody>
</table>