我正在尝试增强应用程序中的部分代码。我目前正在列出一组带有如下代码的注释:
<c:forEach items="{myBean.items}" var="it" varStatus="st">
<p:panel id="child_#{st.index}">...</p:panel>
...
</c:forEach>
这允许我更新每个单独的面板,引用它的 ID,使用
<p:dataScroller value="{myBean.items}" rowIndexVar="st" var="it">
<p:panel id="child_#{st}">...</p:panel>
...
</p:dataScroller>
我收到“无法找到表达式 child_ ... 的组件” 错误,据我所知,这是因为 'st' 的值在呈现面板组件的 JSF 阶段。
有没有可能的方法来实现这一目标?仍然使用 c:forEach 或使用
谢谢。
最佳答案
p:dataScroller
是 UIData
组件,并将通过添加行索引前缀来为其子组件创建唯一的 id。所以你可以简单地使用<p:panel id="child">
。在渲染的 HTML 中,id 类似于 formId:dataScrollerId:0:child
对于第一行,formId:dataScrollerId:1:child
第二行,依此类推。
关于jsf - Primefaces dataScroller 具有子组件的动态 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68386484/