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,如需转载请自行联系原作者

相关文章
|
6月前
|
JSON 前端开发 Java
SpringMVC系列(二)之常用注解介绍及参数传递说明
SpringMVC系列(二)之常用注解介绍及参数传递说明
|
4月前
SpringMVC-拦截器参数及拦截器链配置
SpringMVC-拦截器参数及拦截器链配置
32 0
|
6月前
|
XML JSON Java
SpringMVC常用注解、参数传递、返回值
SpringMVC常用注解、参数传递、返回值
20 0
|
6月前
|
Java 容器
过滤器和拦截器的区别
Filter 也称为过滤器,基于Servlet实现,拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行,基于AOP思想,对方法进行增强。和servlet 中的过滤器类似,都是对用户请求进行处理。
48 0
|
7月前
|
XML JSON 前端开发
【SpringMVC】常用注解、参数传递、返回值
@RequestMapping注解是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上。用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法 此时请求映射所映射的请求的请求路径为:http://localhost:8080/springmvc/requestTest用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。 此时请求映射所映射的请求的请求路径为:http://localhost:8080/springmvc/hello/requestTest
【SpringMVC】常用注解、参数传递、返回值
|
7月前
Struts2的拦截器
Struts2的拦截器
25 0
|
JSON 运维 数据格式
[SpringMVC]拦截器②(拦截器参数、拦截器链配置)
拦截器②(拦截器参数、拦截器链配置)
[SpringMVC]拦截器②(拦截器参数、拦截器链配置)
|
存储 前端开发 Java
SpringMVC 视图解析器 方法返回值 异常处理器
SpringMVC 视图解析器 方法返回值 异常处理器
106 0
SpringMVC:拦截器和过滤器的区别
SpringMVC:拦截器和过滤器的区别
103 0
SpringMVC:拦截器和过滤器的区别
|
Java
Struts拦截器解析
Struts拦截器解析
82 0