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

2024-05-11

有没有办法分配动态IDh:inputHidden成分?

EDIT1

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


无法根据迭代值设置 ID<ui:repeat>。但无论如何你都不需要它。默认情况下,它们将根据迭代索引获得动态且唯一的 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>在上面的例子中)多次生成 HTML。这<c:forEach>将生成多个 JSF 组件,然后每个组件仅生成一次 HTML(因此您实际上会得到多个<h:inputHidden>JSF 组件树中的组件)。

E.g.

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

也可以看看:

  • JSF2 Facelets 中的 JSTL...有意义吗? https://stackoverflow.com/questions/3342984/jstl-in-jsf2-facelets-makes-sense
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

迭代集合时将动态 ID 分配给隐藏字段 的相关文章

随机推荐