3

ページの2か所にPrimefacesツリーを配置できるようにしたい。その理由は、同じデータを持つ2つのツリーを正確に同じ状態(同じノードを展開するなど)にしたいためです。バッキングBeanで両方のインスタンスを同じ値にバインドしようとしましたが、どちらか一方だけがレンダリングされます。私はそれを間違っていますか?これは別の方法で解決する必要がありますか?

関連する質問(要件がわずかに異なります)は、これを行うべきではないと述べていますが、そうでない場合は、何をすべきですか?

JSFコンポーネントはバインド後に消えます

編集1

'value ='を使用すると、選択値を簡単に共有できることに気付きましたが、実際の問題は、どのノードが展開され、どのノードが折りたたまれているかを共有することです。これがサーバーに保存されているのか、それともサーバーに保存できるのかはわかりません。

4

1 に答える 1

6

バッキングBeanで両方のインスタンスを同じ値にバインドしようとしましたが、結果としてレンダリングされるのは1つだけです。私はそれを間違っていますか?

これは間違いなく間違っています。各コンポーネントは、他のコンポーネントと共有されていない、またはリクエストスコープより長く存続しない一意のリクエストスコーププロパティにbinding解決される必要があります。


これは別の方法で解決する必要がありますか?

それらを異なるプロパティにバインドします。動的に拡張可能なプロパティが必要な場合は、を使用しMap<String, UIComponent>ます。

private Map<String, UIComponent> components = new HashMap<String, UIComponent>();

// Getter (no setter necessary).

として使用することができます

<x:someComponent binding="#{bean.components.foo}" />
<x:someComponent binding="#{bean.components.bar}" />
<x:someComponent binding="#{bean.components.baz}" />
于 2012-11-16T11:53:14.290 に答える