例外発生時、Oracle ADF には、もっと判りやすいメッセージを出して欲しいものだ。
jspx に書くrender属性を例えば、
<trh:tableLayout rendered="#{entity_foo.renderNaviButton}">
という記述に対して、以下のようにする。
エンティティ Bean
// entity_foo が指す JavaBean でレンダリング
private boolean renderNaviButton;
public boolean isRenderNaviButton(){
return this.renderNaviButton;
}
public void setRenderNaviButton(boolean renderNaviButton){
this.renderNaviButton = renderNaviButton;
}
----------
Backing Bean レイアウト実行する時に、以下のように実行する。
this.entity.setRenderNaviButton(false); // 非表示
このとき、jspx のrendered値とエンティティBeanのメソッド名が
マッチしない時、→スペルミスすると、一瞬、何が起きたのか困惑する
Exception が発生して、
スペルミスという初歩的なミスに気づきにくい。
####<2010/04/15 20時40分10秒 JST> <Error> <HTTP> <URAN03390> <AdminServer>
<[ACTIVE] ExecuteThread: '10' for queue: 'weblogic.kernel.Default (self-tuning)'>
<<WLS Kernel>> <> <> <1271331610015> <BEA-101020>
<[ServletContext@13280762[app:ViewController module:ViewController.war path:/uran spec-version:2.5]]
サーブレットは例外により失敗しました。
javax.el.PropertyNotFoundException: Missing Resource in EL implementation
: ???propertyNotReadable???
at javax.el.BeanELResolver.getValue(BeanELResolver.java:252)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143)
at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
at com.sun.el.parser.AstValue.getValue(AstValue.java:118)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:192)
at org.apache.myfaces.trinidad.bean.FacesBeanImpl.getProperty(FacesBeanImpl.java:68)
at org.apache.myfaces.trinidad.component.UIXComponentBase
.getBooleanProperty(UIXComponentBase.java:1193)
at org.apache.myfaces.trinidad.component.UIXComponentBase
.isRendered(UIXComponentBase.java:419)
at org.apache.myfaces.trinidadinternal.renderkit.core.xhtml
.PanelGroupLayoutRenderer._encodeChildren(PanelGroupLayoutRenderer.java:142)
at org.apache.myfaces.trinidadinternal.renderkit.core.xhtml
.PanelGroupLayoutRenderer.encodeAll(PanelGroupLayoutRenderer.java:106)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:335)
at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:751)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:415)
:
長いので省略。。
スペルミスを発生させない開発にしたいのだが、Oracle ADF 使うどうのこうの問題でないことは
判ってはいるのだが、
愚痴りたくなる。