3

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

相关问题(要求略有不同)指出不应该这样做,但如果不这样做 - 应该怎么做?

JSF组件绑定后消失

编辑 1

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

4

1 回答 1

6

我试图将两个实例绑定到支持 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}" />
于 2012-11-16T11:53:14.290 回答