【发布时间】:2013-07-25 12:49:24
【问题描述】:
我想在用户空闲时自动更新数据表(在客户端)。我将 Primefaces 3.5 与 glassfish 一起使用,我的想法如下:
我在 bean 中有 boolean autoUpdate 变量。用户可以打开/关闭自动更新。
我创建了两个组件:p:poll 和 p:idleMonitor。
idleMonitor 有两个事件,触发更新
<p:ajax event="idle" oncomplete="myPoll.start();" />
<p:ajax event="active" oncomplete="myPoll.stop();" />
这部分没问题。问题是,当autoUpdate 设置为False 时,如何禁用idleMonitor?当我这样做时
<h:panelGroup id="updatePanel" rendered="#{cc.attrs.bean.autoUpdate}">
....
</h:panelGroup>
只有当我以autoUpdate = false 开头并且我只能切换一次模式时它才有效。渲染后无法更改。我也试过了
<p:ajax event="idle" oncomplete="#{cc.attrs.bean.autoUpdate ? 'myPoll.start();' : ''}" />
但它也没有工作。 #{cc.attrs.bean.autoUpdate} 永远不会改变。即使我在上面调用 upadte,我也可以看到变量在另一个地方发生了变化。
所以,我的问题是:有什么方法可以在渲染后禁用 idleMonitor?或者对于空闲用户的可选定期更新有什么更好的解决方案?
【问题讨论】:
-
所以你想要空闲监视器,但只有一次?当第二次用户空闲时,您不希望该选项?
-
不,我希望每次用户空闲时都有空闲监视器。但前提是他将
autoUpdate设置为True。这意味着,他可以在会话期间在True和False之间切换而无需重新加载页面。 -
嗯,你试过用 p:outputPanel 代替 h:panelGroup 吗?第一个更和谐的是我的主观感受。
标签: java jsf primefaces auto-update ajax-polling