天天看点

struts2.0拦截器的返回值

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的逻辑拆开。在这两个逻辑中间就可以插入拦截器的处理逻辑了。

本文转自 斯然在天边 51CTO博客,原文链接:http://blog.51cto.com/winters1224/797910,如需转载请自行联系原作者

继续阅读