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>ます。

<c:forEach>代わりにJSTLを使用<ui:repeat>します (不足している引用符を修正します):

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

<p:panel>このようにして、複数回レンダリングされる 1 つだけではなく、物理的に複数のコンポーネントを実際に生成しています。

ただし、JSTL を使用すると、質問からは明らかでない全体像に応じて、他の注意事項が生じる場合があります。JSF2 FaceletsのJSTLも参照してください...理にかなっていますか?

于 2012-04-05T17:05:31.763 に答える