【发布时间】:2011-05-21 16:30:51
【问题描述】:
我有一个包含动态表单文本字段的简单数据表。每个字段都有一个在支持 bean 中定义的 ID,所以我想使用该 ID 来识别每个 h:inputText 字段。
<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 项目的 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 包含在输入 id 属性中?为什么省略了ID?
【问题讨论】:
标签: java jsf datatable facelets