有没有办法为h:inputHidden
组件分配动态 ID?
编辑1
我试图ui:repeat
在迭代元素集合时分配标签内的 id。
无法根据 的迭代值设置 ID <ui:repeat>
。但无论如何你都不需要它。默认情况下,它们将根据迭代索引获得动态且唯一的 ID。
例如
<h:form id="form">
<ui:repeat value="#{bean.list}" var="item">
<h:inputHidden id="hidden" value="#{item.value}" />
</ui:repeat>
</h:form>
将在视图渲染期间生成此 HTML
<form id="form" name="form">
<input type="hidden" id="form:0:hidden" name="form:0:hidden" value="item1value" />
<input type="hidden" id="form:1:hidden" name="form:1:hidden" value="item2value" />
<input type="hidden" id="form:2:hidden" name="form:2:hidden" value="item3value" />
</form>
如果要手动控制 ID,则需要使用<c:forEach>
,因为<ui:repeat>
它不会生成多个 JSF 组件,而是让其子级(<h:inputHidden>
在上面的示例中为单个)多次生成 HTML。这<c:forEach>
将生成多个 JSF 组件,然后每个组件只生成一次 HTML(因此您实际上最终会<h:inputHidden>
在 JSF 组件树中得到多个组件)。
例如
<h:form id="form">
<c:forEach items="#{bean.list}" var="item">
<h:inputHidden id="#{item.id}" value="#{item.value}" />
</c:forEach>
</h:form>
它基本上会在视图构建期间生成这个 JSF 组件树
<h:form id="form">
<h:inputHidden id="item1id" value="#{bean.list[0].value}" />
<h:inputHidden id="item2id" value="#{bean.list[1].value}" />
<h:inputHidden id="item3id" value="#{bean.list[2].value}" />
</h:form>
这反过来将在视图渲染期间生成此 HTML
<form id="form" name="form">
<input type="hidden" id="form:item1id" name="form:item1id" value="item1value" />
<input type="hidden" id="form:item2id" name="form:item2id" value="item2value" />
<input type="hidden" id="form:item3id" name="form:item3id" value="item3value" />
</form>
默认情况下,它们会被分配一个动态 ID。您还可以指定id="#{..}
对其进行自定义。
您也可以动态添加任何随机数 ( id="#{}"
),但是
将功能相关的 id 添加到隐藏组件中,这将很有帮助
例如,如果它是员工表格,您可以在其中添加 empid。