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的逻辑拆开。在这两个逻辑中间就可以插入拦截器的处理逻辑了。
struts2.0拦截器的返回值
原创
©著作权归作者所有:来自51CTO博客作者winters1224的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:spring获取运行时环境
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章