先程まで、OGNL式の謎の例外に悩まされていたのですが、
Caused by: java.lang.NullPointerException at com.opensymphony.xwork2.ognl.OgnlValueStack.checkForInvalidProperties(OgnlValueStack.java:298) at com.opensymphony.xwork2.ognl.OgnlValueStack.findValue(OgnlValueStack.java:237) at org.apache.struts2.components.Component.findValue(Component.java:248) at jp.root42.r42fw.export.web.ui.components.SetLocal.end(SetLocal.java:48) ... 311 more
やっと解決しました。
これは、Beanに存在しないプロパティへアクセスしたときに出るエラーみたいです。
僕はこのような状況で発生しました。
Beanクラス
public class Hoge { private String foo; //本来ならgetFooとすべきなのにミスしている箇所 public String getBar() { return foo; } }
JSPファイル
<s:set var="hogeBean" var="..." /> <s:property value="#hogeBean.foo" /> ← ここでエラー
ところで、OgnlValueStack#checkForInvalidPropertiesのJavadocにはこう書いてありました。
/** * This method looks for matching methods/properties in an action to warn the user if * they specified a property that doesn't exist. * * @param expr the property expression */ private void checkForInvalidProperties(String expr) { ... }
わざわざ警告メッセージを出してあげようとしているのに、それに失敗して例外を吐くとは本末転倒な気が。
まあ、バグを出した僕が悪いのだけども(=_=)