В контроллере есть два метода с валидацией аргумента, один метод
GET
, другой -
POST
. Почему в случае с POST методом Exception Handler отлавливает исключение при передаче невалидных данных в виде JSON и выводит ответ в виде JSON в Tomcat, а при GET методе Exception Handler не обрабатывает исключение и не выдает ответ в виде JSON, а только выводит статус операции как 400 Bad Request?
@PostMapping
public EntityModel<TagDto> create(@Valid @RequestBody TagDto tagDto) {
// тут срабатывает исключение при вводе невалидных данных и обрабатывается
}
@GetMapping
public CollectionModel<TagDto> findAll(@Valid EsmPagination pagination) {
// При вызове данного метода Exception Handler не обрабатывает исключение при невалидных данных
}
Хоть объекты
TagDto
и
EsmPagination
имеют внутри эквивалентную структуру:
TagDto
@AllArgsConstructor
@RequiredArgsConstructor
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public class TagDto extends RepresentationModel<TagDto> {
private Long id;
@NotBlank(message = MessagePropertyKey.VALIDATION_TAG_NAME_NOT_EMPTY)
@Pattern(regexp = DtoRegexValidator.TAG_NAME,
flags = Pattern.Flag.UNICODE_CASE,
message = MessagePropertyKey.VALIDATION_TAG_NAME)
private String name;
}
EsmPagination:
@AllArgsConstructor
@Getter
@Setter
@ToString
public class EsmPagination implements Serializable {
private static final int MIN_PAGE_INDEX = 1;
private static final int DEFAULT_ELEMENTS_ON_PAGE = 10;
@Min(value = MIN_PAGE_INDEX, message = MessagePropertyKey.EXCEPTION_ESM_PAGINATION_PAGE_INCORRECT_VALUE)
private int page;
@Positive(message = MessagePropertyKey.EXCEPTION_ESM_PAGINATION_SIZE_INCORRECT_VALUE)
private int size;
public EsmPagination() {
this.page = MIN_PAGE_INDEX;
this.size = DEFAULT_ELEMENTS_ON_PAGE;
}
}