struts.xml配置 <package name="default" extends="struts-default">
xxxxx
</package>
. 其中,struts-default包含了struts2默认的拦截器栈.
<interceptor-stack name="defaultStack">
<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="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\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="debugging"/>
</interceptor-stack>
该配置在struts2-core.jar的struts-default.xml文件里.
值丢失原因:
当到conversionError Interceptor类型转换失败时,会添加校验失败信息。
if(action instanceof ValidationAware)
{
ValidationAware va = (ValidationAware)action;
va.addFieldError(propertyName, message);
}
当conversionError Interceptor执行完,到workflow Interceptor时,如果发现有校验错误信息,直接return "input"给struts,就不会再到你的Action里面,导致值丢失。
解决办法:
配置自己的拦截器栈,去除workflow Interceptor。
<interceptors>
<interceptor-stack name="xxx">
<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="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\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="xxx" />
或者想办法在到达workflow Interceptor之前,把你要的值放进struts2的value stack.
struts流程参考
http://hi.baidu.com/hyy_lover/item/4b26c10e3afc0875d45a11f8
分享到:
相关推荐
Struts2输入校验总结 Struts2输入校验
NULL 博文链接:https://chaoyi.iteye.com/blog/2161948
常用Struts校验器 常用Struts校验器 常用Struts校验器
struts2校验器,字段,非字段校验器的语法规则……
Struts属于校验(使用直接编码方式)
关于struts表单验证,关于struts表单验证,关于struts表单验证,
struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架
struts2输入校验总结,struts2自带的校验器,以及校验器不能做的check的处理的总结
struts2登陆验证struts2登陆验证struts2登陆验证struts2登陆验证
但是这样做,不好之处就是我们可以通过人为的将开发者的验证js注掉,这样就导致验证失败,对后台安全性是一个很大的威胁,在采用struts2进行开发时,我们可以采用框架内置的校验器! 本附件为【Struts2】★☆之...
struts2官方例子7-表单验证 xml形式的验证,主要是在相应的action类旁,新建一个对应的xml文件,进行验证
Struts2校验框架应用
struts编程之struts校验整个程序的源代码,内包含struts的开发包,下载导入即可使用
struts2输入校验 对指定方法进行输入校验
该demo是struts验证器validator使用,以及struts基本配置,自定义创建struts的验证器,使用maven创建管理工程,使用eclipse编译器
利用struts技术,用校验器校验用户提交信息的一个简单的用户注册登录的例子。用的数据库是2005的
struts验证器,可以使用
struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...
struts2枚举值转换示例。 包括一个自定义枚举值转换器, 一个自定义日期值转换器。 需要用struts2处理枚举值的朋友可以试一下。 包括所有需要的jar包。