Primefaces dataScroller,具有子组件的动态id



我正在尝试增强应用程序中的一部分代码。我现在列出了一组注释,代码如下:

<c:forEach items="{myBean.items}" var="it" varStatus="st">
<p:panel id="child_#{st.index}">...</p:panel>
...
</c:forEach>

这允许我使用<c: 对于每个/>我可以认为是独一无二的。但这在某种程度上是一种僵硬的方式,因为它迫使我一次加载整套项目。我想实现类似<p: dataScroller>为了让它变得懒惰,并能够按需加载,但如果我使用它,它是这样的:

<p:dataScroller value="{myBean.items}" rowIndexVar="st" var="it">
<p:panel id="child_#{st}">...</p:panel>
...
</p:dataScroller>

我得到了一个"找不到表达式child_的组件">错误,据我所知,这是因为在呈现面板组件的JSF阶段,"st"的值还不可用。有什么可能实现这一点的方法吗?要么仍然使用c:forEach,要么使用<p: dataScroller/>

谢谢。

p:dataScroller是一个UIData组件,它将通过在行索引前面加前缀来为其子级创建唯一的id。所以您可以简单地使用<p:panel id="child">。在呈现的HTML中,第一行的id将类似于formId:dataScrollerId:0:child,第二行的id为formId:dataScrollerId:1:child,依此类推

最新更新