具有子组件动态 id 的 Primefaces dataScroller
Primefaces dataScroller with dynamic id for child component
我正在尝试增强我的应用程序中的一部分代码。我目前正在列出一组评论,代码如下:
<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
,第二行的 id 类似于 formId:dataScrollerId:1:child
,依此类推。
我正在尝试增强我的应用程序中的一部分代码。我目前正在列出一组评论,代码如下:
<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
,第二行的 id 类似于 formId:dataScrollerId:1:child
,依此类推。