我正在使用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秒刷新之间记住树状态?
答案 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
页面上的命名空间中注册过滤器,就可以了。