2014-09-25 44 views
1

我是最新的primefaces。我想要做的是填充h:outputText,但我必須使用p:poll,因爲我提出了一個請求,我必須等待響應,並且可能需要一些時間才能得到答案。一個p:投票停止另一個?

<h:form id="form1"> 
    <p:poll widgetVar="headerPoll" interval="3" listener="#{bean.refreshHeader()}" update="form1" /> 
</h:form> 
<h:form id="bodyForm"> 
    <p:commandButton actionListener = "#{bean.loadBody}" ajax="false" value="load body" /> <br/><br/> 
    <h:outputText id="bodyText" escape="false" value="#{bean.body}" /> 
    <p:poll widgetVar="bodyPoll" interval="3" listener="#{bean.refreshBody()}" update="bodyText" /> 
</h:form> 

相關的豆:

public void refreshHeader() 
    { 
     if(header != null) 
     { 
      RequestContext reqCtx = RequestContext.getCurrentInstance(); 
      reqCtx.execute("headerPoll.stop();"); 
     } 
    } 

    public void refreshBody() 
    { 
     if(body != null) 
     { 
      RequestContext reqCtx = RequestContext.getCurrentInstance(); 
      reqCtx.execute("bodyPoll.stop();"); 
     } 
    } 

的問題是在refreshHeader()功能。當headerPoll.stop()得到執行時,停止第一輪和第二輪輪詢。我只需要停止一個。

我該如何停止其中一項調查?

+0

您使用的是哪個版本的PF? – 2014-09-25 13:15:04

+0

你必須注意,你有一個按鈕是ajax =「false」,會影響你的民意調查....我測試了你的代碼,它對我來說工作得很好。 – 2014-09-25 13:27:06

+0

你可以「停止」(使渲染屬性爲false)停止行爲。 – Cold 2014-09-25 13:37:05

回答

0

看到你已經在投票中設置了interval=3,這就是爲什麼兩個函數並行調用的原因。嘗試在不同的時間運行投票。希望它能工作:)

+0

執行第一個功能停止第二輪詢。在這種情況下_refreshBody()_永遠不會被調用。我試圖改變時間間隔,但沒有。對不起:( – cata321 2014-09-25 11:22:51