PrimeFaces <p:tree>:如何在刷新之间保存树状态?</p:tree>

时间:2012-07-06 14:41:35

标签: jsf tree primefaces

我正在使用PrimeFaces JSF库,我有一个树,其中每个节点都是一个复选框:

<p:tree selectionMode="checkbox"...>

此树代表一些文件,并且每5秒动态刷新(轮询)一次,因为可以添加或删除文件/节点:

<p:poll interval="5" update="treeId"... />

用户可以通过树节点复选框选择文件。选定的节点保存在TreeNodes数组中:

<p:tree selection="#{BackingBean.selectedNodes}"...>

其中selectedNodes定义为:

private TreeNode[] selectedNodes;

问题是:由于树不断刷新(每5秒钟),我松开树状态!用户检查的内容将再次取消选中。

如何在5秒刷新之间记住树状态?

1 个答案:

答案 0 :(得分:1)

如果您使用的是JSF 2:

制作支持bean @ViewScoped

@ManagedBean
@ViewScoped
public class BackingBean {
    ...
}

如果您使用的是JSF 1.2:

使用Richfaces的组件a4j:keepAlive

<a4j:keepAlive bean="BackingBean" />

您还可以选择使用Tomahawk's saveState(适用于您项目的Tomahawk版本),只在视图中添加selectedNodes:

<t:saveState value="#{BackingBean.selectedNodes}" />

只需将Tomahawk及其依赖项放在WEB-INF/lib中,在您的web.xml和.xhtml页面上的命名空间中注册过滤器,就可以了。