我有一种方法可以在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;
}

这样的事情应该起作用。

10-08 01:49