spingMVC Rest风格如何实现拦截异常返回对应异常码

最近开始要用SpringMVC转换之前WSDL WebService,返回的是json串.对于异常情况,比如传递了错误参数,需要返回json的异常码.之前对这块完全没有接触过,所以一点头绪都没.网上瞎找半天还是没结果.

阅读 5.9k
1 个回答

spring的注解校验好像不支持rest ajax请求,他是为了表单页面MVC,
只能自己写检验判断,不过可通过@ControllerAdvice 做全局异常判断,来返回json格式结果如我现在这样


@ControllerAdvice
public class GlobalExceptionHandler {
protected final Logger log = LoggerFactory.getLogger(getClass());

@ResponseBody
@ExceptionHandler(Exception.class)
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
public String handle(Exception e) {
    log.error(null, e);
    return AjaxResult.NewFailureInstance(e).toJson();
}

@ResponseBody
@ExceptionHandler(InvalidTokenException.class)
@ResponseStatus(value = HttpStatus.UNAUTHORIZED)
public String handleInvalidTokenException(InvalidTokenException e) {
    return AjaxResult.NewFailureInstance(e).toJson();
}

}