У меня есть простая таблица данных, которая содержит динамические текстовые поля формы. Каждое поле имеет идентификатор, определенный в компоненте бэкэнда, поэтому я хотел использовать этот идентификатор, чтобы идентифицировать каждое из полей h: inputText.JSF Идентификатор входа игнорируется внутри h: dataTable
<h:dataTable id="fieldTable" value="#{bean.indexFields}" var="item">
<h:column id="column">
<h:inputText id="#{item.id}" value="#{bean.values[item.id]}" />
</h:column>
</h:dataTable>
При попытке просмотреть страницу, JSF генерирует ошибку: The id attribute may not be empty
.
Если добавить константу к атрибуту ввода ID, он работает, но, глядя на сгенерированный ID идентификатор элемента не входит:
<h:inputText id="#{item.id}abc" value="#{bean.values[item.id]}" />
Это генерирует следующий вывод:
<table id="form:fieldTable">
<tbody>
<tr>
<td><input id="form:fieldTable:0:abc" type="text" name="form:fieldTable:0:abc" title="" /></td>
</tr>
<tr>
<td><input id="form:fieldTable:1:abc" type="text" name="form:fieldTable:1:abc" title="" /></td>
</tr>
<tr>
<td><input id="form:fieldTable:2:abc" type="text" name="form:fieldTable:2:abc" title="" /></td>
</tr>
</tbody>
</table>
Есть ли способ включить идентификатор из итерированного элемента в атрибут входного идентификатора? Почему идентификатор пропущен?
Это хороший момент - я не обязательно забочусь об ID. Я столкнулся с этим, потому что я использовал композицию ui: для создания составного элемента управления, содержащего метку, а затем текстовое поле ввода. Идентификатор, указанный в составном элементе управления, использовался как для метки, так и для поля ввода ("# {id} Label" и "# {id}" соответственно). – Travis 2010-12-07 16:16:10