struts2.11中的chain与store

本文探讨了Struts2框架中不同结果类型对于错误处理的影响,特别是使用redirectAction时如何实现更有效的错误信息传递。通过调整拦截器顺序和使用prepare方法,确保在验证失败时能够正确显示错误信息。
s2sh中 result的返回类型使用type="chain"时,发现两个action只共享request请求,
因此即使校验失败也会执行input中配置的action
而后一个action并不共享前一个action的actionError,actionMessage等信息!


使用store拦截器,返回类型为redirecAction时,两个action可以共享actionMessage,actionError
使用<s:debug></debug>标签可以查看堆栈中的内容     

 

Store只存储action级别的Message和Error

  <interceptor-stack name="myStack">

 

            <interceptor-ref name="defaultStack" /> 

           <interceptor-ref name="store">  

                 <param name="operationMode">AUTOMATIC</param>  

           </interceptor-ref> 

</interceptor-stack>

 

  放到defaultStack前面,当action校验失败时  <result name="input" type="redirectAction">updatePUser?user.id=${user.id}</result>不会执行配置的action

 

  若放到defaultStack最后面,当action校验失败时,<result name="input" type="redirectAction">updatePUser?user.id=${user.id}</result>仍会执行action,但会丢失fieldError。

 

当校验失败时,返回页面后,既要得到原来的数据,又要得到验证信息,解决办法:prepare接口及拦截器的配合使用,即重新定义拦截器

 

			<interceptor-stack name="myStack">
				<interceptor-ref name="auth"></interceptor-ref>
				<interceptor-ref name="stack_noprepare"></interceptor-ref>
			</interceptor-stack>
			
			
			<interceptor-stack name="fullStack">
				<interceptor-ref name="prepare"></interceptor-ref>
				<interceptor-ref name="myStack"></interceptor-ref>
				
			</interceptor-stack>

 或者使用ajax技术

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值