BindingResult не работает - PullRequest
0 голосов
/ 31 мая 2018

Я разработал контроллер Restful в Spring-Boot.у него есть метод для сохранения объектов книги (с методом post), который отлично работает, если вы не отправите неверный ввод (например, если вы отправите нецелое значение в целочисленное поле).Проблема здесь в том, что вместо выполнения пружины объекта 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 );
}

1 Ответ

0 голосов
/ 31 мая 2018

Ну, во-первых, вы должны поместить аннотацию проверки в объекты вашей книги, например:

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 );
}
...