我在我的例外中使用Spring注释@ResponseStatus
,如
@ResponseStatus(value=HttpStatus.UNAUTHORIZED)
public class UnauthorizedException extends Exception{
}
问题是我想为HttpStatus.SC_SERVICE_UNAVAILABLE
等许多值抛出相同的错误。
有没有办法在@ResponseStatus
中使用多个值?提前谢谢。
答案 0 :(得分:3)
没有。您不能拥有多个http状态代码。查看http spec
如果您确实想在不同的场景中设置不同的状态代码(但每个响应只有一个状态码),请删除注释,然后通过代码添加:
public X method(HttpServletResponse response) {
if (..) {
response.setStatus(..);
} else {
response.setStatus(..);
}
}
答案 1 :(得分:2)
我想到的唯一解决方法是不使用@ResponseStatus
注释。考虑在控制器中编写自己的错误处理代码,捕获相关的异常,以您希望的方式设置错误代码。如果它在多个控制器中,请考虑编写拦截器或使用AOP。
答案 2 :(得分:1)
您可以使用HttpServletResponse
方法在.setStatus()
类中设置响应代码,您可以从applicationContext
获取该方法。
答案 3 :(得分:0)
为什么不创建多个异常类并抛出适当的异常类?