[Seasar-user:17999] [SAStrutsAOS] SAStruts側のvalidationが動作しない事例報告
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2009年 7月 14日 (火) 11:42:20 JST
岡内です。お世話になっております。
SAStrutsAOSを使用して、既存StrutsシステムにSAStruts画面を追加していますが、
SAStruts側のvalidationの箇所で下記のような現象に遭遇したので報告いたしま
す。
●バージョン
このバージョンを使用しました。
http://d.hatena.ne.jp/newta/20090610/1244647389
●現象
SAStrutsのvalidationを使う(厳密には、ActionのExecuteアノテーションに
input="〜"を設定する)と、
該当メソッドアクセス時にNullPointerExceptionが発生します。
java.lang.NullPointerException
org.apache.commons.validator.ValidatorResources.getForm(ValidatorResources.java:433)
org.seasar.struts.validator.S2AOSValidatorResources.getForm(S2AOSValidatorResources.java:121)
org.apache.commons.validator.Validator.validate(Validator.java:350)
org.seasar.struts.action.ActionWrapper.validateUsingValidator(ActionWrapper.java:171)
org.seasar.struts.action.ActionWrapper.execute(ActionWrapper.java:108)
org.seasar.struts.action.ActionWrapper.execute(ActionWrapper.java:86)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.seasar.struts.action.S2RequestProcessor.process(S2RequestProcessor.java:125)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.seasar.extension.filter.RequestDumpFilter.doFilter(RequestDumpFilter.java:127)
org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:75)
org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
org.seasar.struts.filter.RoutingFilter.forward(RoutingFilter.java:219)
org.seasar.struts.filter.RoutingFilter.doFilter(RoutingFilter.java:90)
org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:63)
org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
●調べた限りでの再現性
常に発生するわけではなく、下記のような場合に発生するようです。
1)struts-config.xmlのplug-inタグにvalidation.xmlが指定されていない場合
<plug-in className="org.seasar.struts.validator.S2AOSValidatorPlugIn"
>
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml"/>
</plug-in>
2)validation.xmlが指定されていても、form定義がひとつもない場合
<form-validation>
<global/>
</form-validation>
●対策
struts-config.xmlのplug-inにvalidation.xmlも含まれていて
<plug-in className="org.seasar.struts.validator.S2AOSValidatorPlugIn"
>
<set-property
property="pathnames"
value=
"/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
validation.xmlにひとつ以上の(ダミー可)form定義がある。
<form-validation>
<global/>
<formset>
<form name="/Sample">
<field property="hoge" depends="required">
<arg0 key="labels.hoge"/>
</field>
</form>
</formset>
</form-validation>
もし間違っていたらごめんなさい。m(__)m
以上
Seasar-user メーリングリストの案内