spring mvc统一处理异常时候返回json或xml

例如,在统一 controller和从处理异常

@Controller  
public class GlobalController {  
  
      
    /** 
     * 用于处理异常的 
     * @return 
     */  
    @ExceptionHandler({MyException.class})  
    public String exception(MyException e) {  
        System.out.println(e.getMessage());  
        e.printStackTrace();  
        return "exception";  
    }  

返回string是没有问题的,但是返回一个对象就不行了。
经过查证,应该是 @ExceptionHandler 只能返回String和 ModelAndView
于是思路就有了:
可以用如下方式返回:
private MappingJacksonJsonView  jsonView = new MappingJacksonJsonView();

@ExceptionHandler(Exception.class)
public ModelAndView handleAnyException( Exception ex )
{
    return new ModelAndView( jsonView, "error", new ErrorMessage( ex ) );
}

直接返回json的modelandview,问题解决~~

参考:
http://stackoverflow.com/questions/5097134/spring-exceptionhandler-does-not-work-with-responsebody
http://haohaoxuexi.iteye.com/blog/1188161

你可能感兴趣的:(spring,mvc,json,xml,异常)