有关取代mvc:annotation-driven使用自定义配置请看:
http://blog.csdn.net/cml_blog/article/details/45222431
1、在项目开发中,自定义全局返回值拦截是非常实用的,就如在Struts2的拦截器中,可以根据Action的返回值自定义返回信息,如果返回SUCCESS就统一返回一个成功的json对象,如果FAIL就返回全局的定义信息
2、配置xml:
2、自定义返回值拦截类,只要实现 org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice接口即可package com.cml.mvc.base; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; import com.cml.mvc.beans.Result; public class MyResponseBodyAdvice implements ResponseBodyAdvice<Result> { private static Log log = LogFactory.getLog(MyResponseBodyAdvice.class); @Override public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) { log.debug("MyResponseBodyAdvice==>supports:" + converterType); log.debug("MyResponseBodyAdvice==>supports:" + returnType.getClass()); log.debug("MyResponseBodyAdvice==>supports:" + MappingJackson2HttpMessageConverter.class .isAssignableFrom(converterType)); return MappingJackson2HttpMessageConverter.class .isAssignableFrom(converterType); } @Override public Result beforeBodyWrite(Result body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { log.debug("MyResponseBodyAdvice==>beforeBodyWrite:" + returnType + "," + body); body.setB("我是后面设置的"); return body; } }
3、controller中只要返回自定义的Result对象,就可以拦截到转换信息,controller代码action中设置了A的值为1,在页面上返回结果:
成功实现自定义返回信息。