0

ajaxリクエストの前にactionListenerを実行するにはどうすればよいですか?

<h:commandButton actionListener=.. action=..>
<f:ajax render="test">
</h:commandButton>

実行順序は次のとおりです。

test
actionListener
action

f:ajax の前に actionListener メソッドが実行されるようにするにはどうすればよいですか?


完全な例:

<h:form>
    <h:commandButton value="test" actionListener="#{bean.toggleProgress}" action="#{bean.do()}" > 
        <f:ajax execute="@form" render="progress" />
    </h:commandButton>

    <h:panelGroup id="progress" >
        <h:outputText rendered="#{bean.progress}" />
    </h:panelGroup> 
</h:form>

class Bean {

    private progress = false;

    public boolean isProgress() {
        System.out.println("in: ajax")
        return progress;
    }

    public toggleProgress(ActionEvent e) {
        System.out.println("in: actionListener")
        progress = true;
    }

    public void do() {
        System.out.println("in: action")
    }
}

systout は次のとおりです。

in: ajax
in: actionListener
in: action
4

0 に答える 0