gpt4 book ai didi

jsf - 如何在 ui :repeat 中设置组件/标签的 id

转载 作者:行者123 更新时间:2023-12-03 20:19:20 25 4
gpt4 key购买 nike

我正在尝试分配一个 id<ui:repeat> 内的组件像这样:

<ui:repeat value="#{bean.columns}" var="column">
<h:panelGroup layout="block" id="column_#{column.id}"
styleClass="#{column.id} dashboard_column">

问题是 #{column.id}值被正确放置在 styleClass 内值但它没有被设置在 id 中属性。所有这些都设置在 id 中属性是自动生成的 id由 JSF + 我的硬编码值 column_ .

如果我删除硬编码 column_我得到一个异常(exception):

java.lang.IllegalArgumentException: component identifier must not be a zero-length String at



有什么想法吗?

最佳答案

这对于诸如 <ui:repeat> 的渲染时间标记是不可能的。 . <ui:repeat>然而,它本身已经通过在其前面加上行索引来确保生成的客户端 ID 的唯一性。所以只需从组件的 ID 属性中删除 EL 部分。

<ui:repeat value="#{bean.columns}" var="column">
<h:panelGroup layout="block" id="column">

带有 View 构建时间标签,例如 <c:forEach> (这基本上会生成多个 <h:panelGroup> 组件,而不是只渲染多次的组件),可以像这样指定一个动态 ID。
<c:forEach items="#{bean.columns}" var="column">
<h:panelGroup layout="block" id="column_#{column.id}">

(您应该只是 well aware JSTL 在 Facelets 中的工作方式)

另一种方法是使用静态 <div>元素而不是 JSF <h:panelGroup layout="block">组件。
<ui:repeat value="#{bean.columns}" var="column">
<div id="column_#{column.id}">

另见:
  • JSTL in JSF2 Facelets... makes sense?
  • 关于jsf - 如何在 ui :repeat 中设置组件/标签的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9147771/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com