Как получить список ошибок с помощью BindingResult для @Valid List - PullRequest
0 голосов
/ 07 января 2019

У меня есть метод контроллера Spring, который я хочу проверить с помощью @Valid и получить список ошибок BindingResult. Но в моем @RequestBody есть список List.

@PostMapping(path="/save/inouts")
public ResponseEntity<List<InoutResponse>> saveInouts(@Valid InoutWrapper inouts, BindingResults res){
.....
}

class InoutWrapper {
   private List<Inouts> inoutList;
//getters and //setters

}

Так что мне нужно получить список ошибок, так как каждая ошибка имеет ссылку на объект Inout для создания InoutResponse.

1 Ответ

0 голосов
/ 07 января 2019

У вас есть 2 варианта, либо удалите аннотацию @valid из параметра контроллера и явно вызовите проверку. Как ниже:

javax.validation.Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
final Set<ConstraintViolation<InoutWrapper>> constraints = validator.validate(inouts);

Или напишите обработчик исключений для вашего контроллера. Я бы предпочел этот. Примерно так:

@ControllerAdvice
class MyExceptionHandler extends ResponseEntityExceptionHandler {
  @Override
  protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,
   HttpHeaders headers, HttpStatus status, WebRequest request) {
     // read ex.getBindingResult().
     return super.handleMethodArgumentNotValid(ex, headers, status, request);
    }
  }
...