Обработчик исключений Spring Boot не вызывается для объектов параметров - PullRequest
0 голосов
/ 16 апреля 2020

Я использую Spring Boot 2.2.5.RELEASE и получил контроллер с объектом параметров.

@GetMapping(path = SOME_PATH, produces = MediaType.APPLICATION_JSON_VALUE)
public List<Purchase> searchPurchases(@Valid SearchPurchaseCriteria criteria) throws ResourceForbiddenException {

}

Объект paramter содержит несколько полей, но важными являются следующие:

@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate begin;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate end;

Если я отправлю недопустимую дату, такую ​​как begin = 2010-01-2 (обратите внимание на отсутствие 0), это приведет к исключению ConversionFailedException, которое, в свою очередь, будет сопоставлено с исключением TypeMismatchException средой Spring Boot. Обычно я могу обработать эти исключения, используя глобальный обработчик исключений:

@ControllerAdvice
public class ProblemResponseExceptionHandler {

    @ExceptionHandler(TypeMismatchException.class)
    protected ResponseEntity<ProblemJson> handleTypeMismatchException(TypeMismatchException ex) {
       // do something
    }

}

Но это не работает для этого исключения, сгенерированного из объекта paramter. Я также пытался обработать исключение ConversionFailedException напрямую.

Это ошибка или я что-то не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...