迭代集合时,将动态id分配给隐藏字段

时间:2012-04-25 11:37:33

标签: java javascript jsf primefaces

有没有办法为h:inputHidden组件分配动态ID?

EDIT1

我在迭代元素集合时尝试在ui:repeat标记内分配id。

3 个答案:

答案 0 :(得分:3)

无法根据<ui:repeat>的迭代值设置ID。但无论如何你根本不需要它。默认情况下,它们将根据迭代索引获取动态和唯一ID。

E.g。

<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> <c:forEach> 1}}在上面的例子中)多次生成HTML。 <h:inputHidden>将生成多个JSF组件,然后每个组件只生成一次HTML(因此,您最终会在JSF组件树中最终生成多个<h:form id="form"> <c:forEach items="#{bean.list}" var="item"> <h:inputHidden id="#{item.id}" value="#{item.value}" /> </c:forEach> </h:form> 组件。)

E.g。

<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>

它将在视图构建时基本生成此JSF组件树

<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>

反过来会在视图渲染时生成此HTML

{{1}}

另见:

答案 1 :(得分:1)

默认情况下会为其分配动态ID。您还可以指定id="#{..}来自定义它。

答案 2 :(得分:0)

您也可以动态添加任意随机数(id="#{}"),但

功能相关的ID添加到隐藏组件 ,这将有所帮助

例如,如果是员工表单,您可以添加empid。