0

我有一个需要在屏幕上呈现的对象列表,“想想可拖动的面板”。这些面板中的每一个都有自己的材质,需要在其中进行渲染。我最初的想法是做类似的事情

<ui:repeat value="#{bean.widgets} var="widget">
    <p:panel binding="#{widget.contents}/>
</ui:repeat>

现在这可能由于多种原因而行不通。我知道的一个是“var”只是请求范围。所以,虽然我可以访问我的“小部件”java 对象中的字段值,但我不能直接调用一个方法来绑定我的面板。

任何人都可以提供方向吗?

当前运行 PrimeFaces 3.2 | 玻璃鱼 3.1.2 | 莫哈拉 2.1.6

4

1 回答 1

0

binding属性是在视图构建期间评估的,而该<ui:repeat var>属性是在视图渲染期间评估的,因此它确实是null<p:panel>发现和构建的时候。

使用 JSTL<c:forEach>代替<ui:repeat>(并修复缺少的引号):

<c:forEach items="#{bean.widgets}" var="widget">
    <p:panel binding="#{widget.contents}/>
</c:forEach>

通过这种方式,您实际上还可以在物理上生成多个<p:panel>组件,而不是只生成一个多次渲染的组件。

然而,使用 JSTL 可能有其他注意事项,具体取决于问题中尚不清楚的总体情况。另请参阅JSF2 Facelets 中的 JSTL... 有意义吗?

于 2012-04-05T17:05:31.763 回答