是否可以通过@ExceptionHandler

时间:2018-12-12 14:26:11

标签: java spring-boot exception-handling

这是我第一次在stackoverflow中提出问题。我想问问是否有一种方法可以通过@ExceptionHandler将多个错误类型同时抛回给用户一个对象?

例如,当用户请求服务时需要满足以下要求

(1) accountNo : required
(2) userDecision : @Pattern(regex="^[1|2]$")

但是,用户已省略accountNo(MissingServletRequestParameterException),并将userDecision输入为3(ContraintViolationException)。然后我可能会抛回像这样的Json对象

 [
    {
        "error1":"your accnoutNo is empty",
        "error2":"your decision is wrong"
    }
] 

同时显示给用户?

非常感谢,抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

您可以实现自定义验证器(https://docs.spring.io/spring/docs/4.1.x/spring-framework-reference/html/validation.html),并在validate方法中拒绝这些值。

此后,您可以在处理ValidationExceptions的此Validator的基础上,使用@ControllerAdvice注释实现ExceptionHandler(扩展ResponseEntityExceptionHandler)。

看看这个:https://stackoverflow.com/a/53726774/10664009也许有帮助