Я использую 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 напрямую.
Это ошибка или я что-то не так делаю?