你不需要這樣做。 JSF爲你做。只要指定一個固定ID,只要它在相同的範圍內即可。
<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元素ID在這種情況下由所有父組件NamingContainer
和當前項目索引組成。
下面是生成的輸出的一個例子,假設你給所有NamingContainer
組件,如<h:form id="form">
和<rich:dataGrid id="grid">
(否則JSF將自動生成的ID喜歡j_idt1
等等,這完全正常工作的很好,但不是一個固定的ID立即可讀):
<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>
謝謝你的詳細解答! – egaga
不客氣。 – BalusC