我必须使用某些条件在 JSF 中停止并启动p:poll
...我可以通过将民意调查放在面板网格中并使面板网格呈现来做到这一点......我认为它可以工作,因为在我使面板网格呈现为假后没有调用轮询操作状态......当我显示它时,它也重新启动。 但是有一个网络调用仍在触发;搞砸了很多事情;怎么处理?
<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 文档 说:
可以使用客户端 API 启动和停止轮询;或绑定 布尔变量为
stop
属性,并在任意位置将其设置为 false 任意时间。
在您的情况下,这将javaScript
:
PF('poller').stop();
或PF('poller').start();
或者将boolean
Bean 属性绑定p:poll
的stop
属性:
<p:poll stop="#{myBean.stopPoller}" interval="8" widgetVar="poller" autoStart="true"
listener="#{myBean.pollOperationStatus}"
update=":#{p:component('newServerID')} :#{p:component('mypollform')}" />
另请注意,update
属性中的组件 ID 用空格分隔,而不是逗号。