在struts2中多个action间如何传递ActionError及actionmessage?
kyo100900
2008-09-05
zhuzidian 写道 kyo100900 写道 引用 <result name="input" type="redirect-action">adminGLZF!update?adminId=${adminId} </result> 为什么验证失败了还要 redirect-action 一下? 直接返回 dispatcher 到 input页面不好吗? 但是如果在进入input页面之前还经过了一个action(例如为了取数据), 那就不能直接dispatcher 到 input页面啦, 而是要重新经过一个action吧, 但是要经过一个action就要redirect-action 一下, ActionError和FieldError等就不见了, 所以很矛盾... 假设input方法是为了取数据, save方法是保存. 1.如果是手动在Action验证:在调用save方法时,当验证没有通过时,再调用一次input if(validator()==false){ input(); //再次取数据 actionMessage(); actionError(); ....... return INPUT; } 2.如果是使用Struts2自带的验证框架, 2.1) 最简单的话可以实现prepare接口,再次调用:input(); public void prepare() throws Exception { input(); } 2.2) 更灵活的方式是自己写一个Interceptor public class SimpleInterceptor extends AbstractInterceptor { public String intercept(ActionInvocation invocation) throws Exception { MyAction action = (MyAction)invocation.getAction(); action.input(); return invocation.invoke(); } } 注意配置的时候,该Interceptor 一定要在<interceptor-ref name="validation"> 之前, 否则input不会被调用。 上面的两种方式,我都亲自试了,希望对你有帮助。 |
|
zhuzidian
2008-09-06
非常感谢, 解决了困扰我很久的问题了
|
|
smallsnake
2008-09-14
用chain ,action链式处理
|
|
smallsnake
2008-09-14
chain,可以保证ActionError和FieldError等信息不会丢失
下面是struts2的API解释 This result invokes an entire other action, complete with it's own interceptor stack and result. |
|
cosmicbao
2008-10-29
用chain 解决
在要链接的action中加入<interceptor-ref name="chain" /> 在跳转的链接中加入 <result name="input" type="chain"></result> |
相关讨论
相关资源推荐
- Struts2-ActionError-ActionMessage-Example
- Struts2&ActionError&ActionMessage&Demo
- Struts2的ActionError&ActionMessage示例
- Struts 2 ActionError和ActionMessage示例
- Struts学习之ActionError,ActionMessage介绍
- struts2中多action间传递ActionMessage,ActionError
- Struts2中ActionError与ActionMessage的互转,解决不同action不同页面的跳转问题
- Struts的actionerror和actionmessage标签
- struts2 - ActionError & ActionMessage
- Struts 2 ActionError & ActionMessage Example