我希望能够在我的页面上的2个位置有一个Primefaces树。原因是我希望两个具有相同数据的树具有相同的状态 - 相同的节点扩展等。我尝试将两个实例绑定到支持bean中的相同值,但这导致其中只有一个呈现。我做错了吗?这应该以不同的方式解决吗?
相关问题(要求略有不同)说明不应该这样做,但如果不是 - 应该做什么?
JSF component disappears after binding
修改1
我注意到我可以使用'value ='轻松共享选择值,但真正的问题是共享哪些节点被展开以及哪些节点被折叠。我不知道这是存储在服务器上,还是可以存储在服务器上。
答案 0 :(得分:5)
我尝试将两个实例绑定到支持bean中的相同值,但这导致其中只有一个呈现。我做错了吗?
这绝对是错误的。每个组件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}" />