0

JSF ページにカウントダウンが必要で<p:poll>、Primefaces で解決しました。

私は次のソースを持っています:

JSFページ:

<h:form>
    <h:outputText id="timeLeft" value="#{bean.secondsToGo}" />
    <p:poll interval="1" listener="#{bean.countdown}" stop="#{bean.secondsToGo<0}" update="timeLeft" />
</h:form>

BEAN (ビュースコープ):

private int secondsToGo;
public void setValues(){ //prerenderview-event )
    if(FacesContext.getCurrentInstance().isPostback()){
        System.out.println("POSTBACK RECOGNIZED");
        return; //ignore ajax-calls!
    }
    ...
    secondsToGo=74; //(the value depends from a GET-parameter
    System.out.println("INIT: " + secondsToGo);
}

public void countdown(){
    System.out.println("BEFORE: " + secondsToGo);
    secondsToGo--;
    System.out.println("AFTER: " + secondsToGo);
}

おもしろい、または奇妙なことは、ajax 呼び出しが実行されると (p:poll)、secondsToGo が 0 にリセットされることです。

INIT: 74 //正しい値

前: 0

後: -1

なんで?

4

1 に答える 1