JSF1.1ライフサイクル確認

どんなライフサイクル?

なお、ボタン等のimmediate属性がTRUEの場合、process Validattion と updtea model values がスキップされる。

ネタ:
1.http://www.atmarkit.co.jp/fjava/special/jsf01/jsf01.html
2.amazon:Light Weight Java―JSF/Hibernate/SpringによるフレームワークでWebアプリケーションの開発効率向上

箇所の特定

方法1.Errorオブジェクトを配置する。
方法2.com.sun.rave.web.ui.appbase.AbstractPageBeanのサブクラスに以下のメソッドを仕込む。


private void handleError(){
java.util.Iterator it = getFacesContext().getMessages();
while(it.hasNext()){
System.out.println(((javax.faces.application.FacesMessage)it.next()).getSummary());
}
}

ついで:方法2のサンプル。


@Override
protected void beforeRestoreView() { logMethod("beforeRestoreView"); }
@Override
protected void afterRestoreView() { logMethod("afterRestoreView"); }
@Override
protected void beforeApplyRequestValues() { logMethod("beforeApplyRequestValues"); }
@Override
protected void afterApplyRequestValues() { logMethod("afterApplyRequestValues"); }
@Override
protected void beforeProcessValidations() { logMethod("beforeProcessValidations"); }
@Override
protected void afterProcessValidations() { logMethod("afterProcessValidations"); }
@Override
protected void beforeUpdateModelValues() { logMethod("beforeUpdateModelValues"); }
@Override
protected void afterUpdateModelValues() { logMethod("afterUpdateModelValues"); }
@Override
protected void beforeInvokeApplication() { logMethod("beforeInvokeApplication"); }
@Override
protected void afterInvokeApplication() { logMethod("afterInvokeApplication"); }
@Override
protected void beforeRenderResponse() { logMethod("beforeRenderResponse"); }
@Override
protected void afterRenderResponse() { logMethod("afterRenderResponse"); }
private void logMethod(String str){
System.out.println(new java.util.Date() + ":" + this.getClass().getName() + "." + str);
handleError();
}
private void handleError(){
java.util.Iterator it = getFacesContext().getMessages();
while(it.hasNext()){
System.out.println(((javax.faces.application.FacesMessage)it.next()).getSummary());
}
}