【发布时间】:2012-08-31 10:45:25
【问题描述】:
我正在使用素面 3.2。 Ajax 轮询不会停止,我正在使用 stop 属性来停止轮询,并且我正在尝试使用 getter 和 setter 来停止它从 bean 中停止。 即使我已经使用 java 脚本停止,但我不能。有什么办法可以停止轮询?
【问题讨论】:
-
哇...您真的应该开始将以前的答案标记为“正确”。
标签: jsf primefaces
我正在使用素面 3.2。 Ajax 轮询不会停止,我正在使用 stop 属性来停止轮询,并且我正在尝试使用 getter 和 setter 来停止它从 bean 中停止。 即使我已经使用 java 脚本停止,但我不能。有什么办法可以停止轮询?
【问题讨论】:
标签: jsf primefaces
在我的例子中,这段代码就像一个魅力:
<p:poll interval="2" update="flightsTable" widgetVar="poll"
autoStart="false" listener="#{searchFlightBean.checkIfSearchCompleate}"/>
searchFlightBean 中的方法:
public void checkIfSearchCompleate() {
if(searchCompleate) {
RequestContext reqCtx = RequestContext.getCurrentInstance();
reqCtx.execute("poll.stop();");
}
}
【讨论】:
我的解决方案:
<h:panelGroup id="chartPanel">
<h:graphicImage value="#{resource['img:loading.gif']}"
rendered="#{!indexController.chartReady}">
<p:poll interval="1" update="chartPanel" autoStart="true" />
</h:graphicImage>
<p:chart id="chart" type="line" model="#{indexController.chartModel}"
rendered="#{indexController.chartReady}" />
</h:panelGroup>
chartReady 为真时停止轮询,bean 中没有更多代码
【讨论】:
<p:poll id="checkListPoll" interval="2" process="@none"
update="checkList" widgetVar="chkList"/>
<h:panelGroup id="checkList"> ... </h:panelGroup>
您可以在控制器中使用它来停止 ajax 请求:
PrimeFaces.current().executeScript("PF('chkList').stop()"); //after Primefaces 7.0
或使用旧的 Primefaces 版本:
import org.primefaces.context.RequestContext;
...
RequestContext.getCurrentInstance().execute("PF('chkList').stop()"); //before Primefaces 7.0
【讨论】: