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