2

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

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

这允许我更新每个面板引用它的 ID,使用 <c:forEach/> 我可以假设它是唯一的。但这在某种程度上是一种僵硬的方式,因为它迫使我一次加载整套项目。我想实现类似 <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 o 使用 <p:dataScroller/> 调整我的代码?

谢谢。

4

1 回答 1

2

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

于 2021-07-15T08:44:27.140 回答