如何在同一个xhtml页面上跨两个表单共享一个变量?

时间:2012-07-02 19:20:03

标签: jsf-2 primefaces

我有两个primefaces(p:layoutUnit)小部件:我页面左侧layoutUnit中的一个树,以及我页面中心layoutUnit中的dataArea(待决定)。我有树菜单工作,以便在选择节点时,调用适当的DAO方法并返回对象。我的麻烦在于,对象是否返回到页面左侧的树形式。

我的问题是:如何让返回的对象填充到我页面的中心?是否有JSF机制来执行此操作?

1 个答案:

答案 0 :(得分:2)

您可以利用<p:tree>组件的select事件发出ajax调用,该调用将根据所选节点更新页面的dataArea:

例如:

<p:tree value="#{treeBean.model}" dynamic="true">
   <p:ajax event="select" listener="#{treeBean.onNodeSelect}" update="form2:dataArea"/>
   ...
</p:tree>

在onNodeSelect中,您将使用要在dataArea中显示的值填充控制器上的实例变量。将update属性设置为“form2:dataArea”将使页面将dataArea更新为最新状态(并获取您在实例变量中放置的数据)。请注意,“form2:dataArea”只是猜测您的第二个表单ID和dataArea的id被标记为。