我有一种方法可以在Spring MVC环境中处理特定类别的异常。
方法(简化)的实现如下
@ExceptionHandler(AjaxException.class)
@ResponseStatus(value=HttpStatus.BAD_REQUEST)
@ResponseBody
public Exception handleException(AjaxException ex) {
return ex;
}
这很好用,但是要返回不同的
ResponseStatus
,我必须创建一个新的处理方法。是否可以在方法主体内部更改响应状态,而不使用
@ResponseStatus
批注而不更改返回类型?如果不是,是否可以通过更改返回类型来获得相同的结果(也许是我自己序列化异常类并以字符串形式返回)?
最佳答案
将HttpServletResponse
添加到方法签名中,然后只需调用setStatus
方法即可。
@ExceptionHandler(AjaxException.class)
@ResponseBody
public Exception handleException(AjaxException ex, HttpServletResponse response) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return ex;
}
这样的事情应该起作用。