我必须停止并使用某些条件在JSF中启动p:poll
...我能够通过将poll放在panelgrid中并使panelGrid呈现来实现...我认为它的工作因为pollOperationStatus在我制作之后没有被调用panelGrid呈现为false ...当我显示它时,它也会重新启动..但是仍有一个网络调用正在触发;它弄乱了许多东西;如何处理它?
<h:form>
My main form
</h:form>
<h:form id="mypollform">
<p:outputLabel id="currentTime" value="#{myBean.counter}" />
<h:outputText value="#{myBean.startPoll}" id="counter11" />
<p:panelGrid rendered="#{myBean.startPoll}">
<p:poll interval="8" widgetVar="poller" autoStart="true"
listener="#{myBean.pollOperationStatus}"
update=":#{p:component('newServerID')},:#{p:component('mypollform')}" />
</p:panelGrid>
</h:form>
Primefaces 7 Documentation says:
可以使用客户端api启动和停止轮询;或者将布尔变量绑定到
stop
属性,并在任意时间将其设置为false。
在你的情况下,这将在javaScript
:
PF('poller').stop();
或PF('poller').start();
或者将boolean
bean属性绑定到stop
的p:poll
属性:
<p:poll stop="#{myBean.stopPoller}" interval="8" widgetVar="poller" autoStart="true"
listener="#{myBean.pollOperationStatus}"
update=":#{p:component('newServerID')} :#{p:component('mypollform')}" />
还要注意update
中的组件ID属性are separated by space, not comma.