折叠p:树

时间:2011-07-05 11:09:31

标签: primefaces

我有一个用作菜单的树,因此每个节点都是可点击的,并打开另一个* .xhtml文件。树上显示每个带有模板的* .xhtml文件。

问题:如果重定向到* .xhtml文件,树会崩溃。令人惊讶的是,所选节点保持选中状态(它被选为彩色)。树不应该崩溃!

树是动态生成的,但它只生成一次。

使用Primefaces 2.2.1和3.0.M2进行测试

我该如何解决这个问题?在primefaces展示这个作品。

我的代码:

<h:form id="formTreeStudents">
   <p:tree id="treeGroups"
        value="#{studentTree.root}"
        var="node"
        cache="true"
        selectionMode="single"
        nodeSelectListener="#{studentTree.onNodeSelect}"
        selection="#{studentrTree.selectedNode}"
        onselectComplete="ajaxDialog.show();"
        update="statusbar userbar">
      <p:treeNode>
        <h:outputText value="#{node.treeString}" styleClass="treeNodeParent"/>
      </p:treeNode>
    </p:tree>
    <p:ajax event="load" onstart="ajaxDialog.hide();"/>
</h:form>

bakingBean是sessionScoped。它有getter和setter,类似于primefaces showcase和一个监听器函数的例子。

@ManagedBean
@SessionScoped
public class StudentTree implements Serializable{
...
     public void onNodeSelect(NodeSelectEvent event) {
     ...
     }
}

2 个答案:

答案 0 :(得分:2)

树节点保持选中状态,因为托管bean的属性#{studentrTree.selectedNode}具有值。

您的托管bean是@SessionScoped,因此即使您离开并返回该页面,它也会在会话中生效。如果您要将其更改为@ViewScoped,那么当您离开页面时托管bean将会死亡,当您导航回页面时,属性selectedNode将再次成为其默认值。

答案 1 :(得分:1)

解决了它。

适用于Primefaces 3.0.M2。我的库或缓存数据出了问题。 必须进行一些更改才能使用3.0.M2。

f.e:

nodeSelectListener="#{studentTree.onNodeSelect}"

现在替换为

<p:ajax event="select" listener="#{studentTree.onNodeSelect}"/>