新手刚学struts2,对struts2中action的多个方法进行校验问题有点头疼,现在算是解决了,下面分享一下:
在action中可能有多个处理业务的方法,我们可能要对多个不用的方法进行不同的验证,下面是通过校验框架(有效的XML文件)对action中多个方法进行验证:
(1) 通过 action-action_方法名-validation.xml 验证
解释:第一个action是你写的action类名,第二个action是你在配置文件中配置的action的名字,方法名是进行验证的方法名称。它的用法和全局的校验一样,只不过它只对你指定的那个方法进行校验
(2)通过 重新定义paramsPrepareParamsStack中的validation拦截器,把不需要拦截的方法名用逗号隔开依次写到param标签中。如下:
<interceptors>
<interceptor-stack name="myValidateStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="multiselect"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<!-- 重新定义validateion拦截器,通过全局的XML配置文件对doInsert,doUpdate方法进行校验 -->
<param name="excludeMethods">insert,update,doDelete,findAll</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">insert,update,doDelete,findAll</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myValidateStack"></default-interceptor-ref>
然后自定义默认拦截器栈,下面的工作就像全局校验一样了。这样部署一下就可以只对某些方法进行验证了。