使用休眠验证器一次验证所有字段

Validate all fields at once using hibernate validator

我正在使用 Spring Boot 2.2.0 通过 java bean 验证框架构建 restful 服务。 Hibernate-Validator 在幕后使用。验证工作正常,但在一个字段无法匹配约束后抛出异常。我想先验证所有字段,然后给消费者一个包含所有错误的响应。这可能吗?

您可能启用了 fail fast mode。只需禁用它即可。

另见 Does Spring's validation routine support Hibernate's JSR 303 implementation option for fail fast mode?

假设您在请求中使用了 @Valid 注释,您可以在 @ExceptionHandler 方法中使用 MethodArgumentNotValidException 来实现这一点。

@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(MethodArgumentNotValidException.class)
public List<String> handleValidationExceptions(MethodArgumentNotValidException ex) {
    //get All errors with
    ex.getBindingResult().getAllErrors();
    //and map them
}