【问题标题】:Stopping ajax polling in jsf primefaces?在 jsf primefaces 中停止 ajax 轮询?
【发布时间】:2012-08-31 10:45:25
【问题描述】:

我正在使用素面 3.2。 Ajax 轮询不会停止,我正在使用 stop 属性来停止轮询,并且我正在尝试使用 getter 和 setter 来停止它从 bean 中停止。 即使我已经使用 java 脚本停止,但我不能。有什么办法可以停止轮询?

【问题讨论】:

标签: jsf primefaces


【解决方案1】:

在我的例子中,这段代码就像一个魅力:

 <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();");
    }
}

【讨论】:

  • 投票电话将停止。但在萤火虫中,我可以看到调用正在运行。它只有在页面刷新后才会停止
  • 你有解决这个问题的方法吗?
【解决方案2】:

我的解决方案:

<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 中没有更多代码

【讨论】:

    【解决方案3】:
    <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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 2023-02-24
      • 2012-09-05
      • 2014-05-14
      • 2018-11-26
      • 1970-01-01
      相关资源
      最近更新 更多