使用休眠验证器一次验证所有字段
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
}
我正在使用 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
}