次のような状況があります。
form1.xhtml:
<h:commandButton action="#{bean1.action1}" /> <!-- action1 returns "form2" -->
form2.xhtml:
<h:form binding="#{bean2.init}">
...
<h:commandButton action="#{bean2.action2}" /> <!-- *** -->
</h:form>
Bean2.java:
@Named
Bean2{
public Object getInit(){
return null;
}
public void setInit (Object i){
//do something
}
form1が送信されると、バインディング メソッド setInit() がフェーズ 6 RENDER_RESPONSE 中に実行され (action1() が「form2」を返した後)、form2 が表示されます。
form2が送信されると、action2() が「null」を返す場合、フェーズ 1 RESTORE_VIEW 中に setInit() が実行されます。ただし、action2() が null ではなく「form2」を返す場合、このメソッドはフェーズ 6 中にも呼び出されます。
なぜなのかご存知ですか?アクションが null を返す場合にもバインディング メソッドを呼び出すことは可能ですか?
どうもありがとう!