您的位置:首页 > 编程语言 > Java开发

struts2.0拦截器的返回值

2012-03-06 11:12 260 查看
struts2.0里写拦截器的时候,如果被拦截的action无异常的执行完毕,并返回了一个返回值,而拦截器试图跳转到另一个返回值上去时,不能简单的用拦截器的return xxx来实现。这样不起作用。

原因是使用 invocation.invoke();的时候,不仅执行了action内部的逻辑,而且会根据action返回的结果去组装result。因此,在拦截器继续执行后续逻辑时,返回结果已经被确定了。这样一来,即使拦截器返回了其它的resultString,也改变不了result了。

正确的实现方法在寻找中。

CH找到了解决的方法:

ActionInvocationWrapper argWrapper = new ActionInvocationWrapper(arg0);

// 单独执行Action

result = argWrapper.executeAction();

// 单独执行Result

argWrapper.executeResult();

这样就把action的逻辑和result的逻辑拆开。在这两个逻辑中间就可以插入拦截器的处理逻辑了。
本文出自 “编程的摩羯男” 博客,请务必保留此出处http://winters1224.blog.51cto.com/3021203/797910
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: