将多个组件绑定到辅助bean中的一个实例(Primefaces Tree)

bje*_*ski 2 jsf binding components primefaces jsf-2

我希望能够在我的页面上的2个位置有一个Primefaces树.原因是我希望两个具有相同数据的树具有相同的状态 - 相同的节点扩展等.我尝试将两个实例绑定到支持bean中的相同值,但这导致其中只有一个呈现.我做错了吗?这应该以不同方式解决吗?

相关问题(要求略有不同)表明不应该这样做,但如果不是 - 应该做什么?

绑定后JSF组件消失

编辑1

我注意到我可以使用'value ='轻松共享选择值,但真正的问题是共享哪些节点被展开以及哪些节点被折叠.我不知道它是否存储在服务器上,或者它是否可以存储在服务器上.

Bal*_*usC 5

我试图将两个实例绑定到支持bean中的相同值,但这导致其中只有一个呈现.我做错了吗?

这绝对是错误的.每个组件binding都应该解析为唯一的请求范围属性,该属性不会被任何其他组件共享,也不会超过请求范围.


这应该以不同方式解决吗?

将它们绑定到不同的属性.如果您想要一个动态可扩展的属性,请使用Map<String, UIComponent>.

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

// Getter (no setter necessary).
Run Code Online (Sandbox Code Playgroud)

可以用作

<x:someComponent binding="#{bean.components.foo}" />
<x:someComponent binding="#{bean.components.bar}" />
<x:someComponent binding="#{bean.components.baz}" />
Run Code Online (Sandbox Code Playgroud)