问题描述
我正在尝试增强应用程序中的一部分代码。我目前正在用这样的代码列出一组评论:
<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 o 使用
谢谢。
解决方法
p:dataScroller
是一个 UIData
组件,它将通过为行索引添加前缀来为其子项创建唯一 ID。所以你可以简单地使用<p:panel id="child">
。在呈现的 HTML 中,id 将类似于第一行的 formId:dataScrollerId:0:child
,第二行的 formId:dataScrollerId:1:child
,依此类推。