Я разработал контроллер Restful в Spring-Boot. у него есть метод сохранения объектов книги (с методом post), который отлично работает, если вы не отправляете недопустимый ввод (например, если вы отправляете нецелое значение в целочисленное поле). Проблема здесь в том, что вместо выполнения Spring объект BindingResult выдает исключение HttpMessageNotReadableException. Поэтому я не могу обрабатывать / обрабатывать ошибки привязки и дальнейшую проверку.
Что мне нужно, так это то, что как я могу сказать Spring не генерирует никаких исключений, пока он связывает запрос с объектом, поэтому я могу использовать bindingResult.hasErrors () и обрабатывать его по-своему.
Примечание: я не хочу обрабатывать объект, созданный Spring.
вот мой код:
@PostMapping
public ResponseEntity<Book> saveBook (
@RequestBody Book book, BindingResult bindingResult, HttpServletRequest request ) {
if ( bindingResult.hasErrors() == true )
throw new RestArgumentValidationException( bindingResult, request.getRequestURI() );
return new ResponseEntity<>( bookRepository.save( _book ), HttpStatus.CREATED );
}




Ну, сначала вы должны поместить аннотацию проверки в свои объекты книги, например:
public class Book {
@Size(min = 5, max = 10)
int height;
}
Затем вы должны указать @Valid в своих объектах, которые необходимо проверить, чтобы сообщить Spring.
@PostMapping
public ResponseEntity<Book> saveBook (
@RequestBody @Valid Book book, BindingResult bindingResult, HttpServletRequest request ) {
if ( bindingResult.hasErrors() == true )
throw new RestArgumentValidationException( bindingResult, request.getRequestURI() );
return new ResponseEntity<>( bookRepository.save( _book ), HttpStatus.CREATED );
}
Я сделал то, что вы упомянули, но это все еще вызывает исключение.