Как настроить пользовательское сообщение об ошибке при использовании @JsonFormat?

У меня возникла проблема, когда я не могу принять неправильный формат даты.

Например:

Если запрос API получает дату «2019-14-10», я не могу его принять. Прямо сейчас, когда я получаю это, JsonFormat выдает мне 2020-02-10.

Чтобы решить эту проблему, я добавил lenient=OptBoolean.FALSE, как показано здесь:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "America/Vancouver", lenient = OptBoolean.FALSE)
private Date effectiveDate;

Теперь проблема в том, что когда я вызываю API, передавая неправильную дату (2019-14-10), я просто получаю ответ на запрос 400 Bad.

Можно ли создать собственный ответ на эту проверку?

Например, могу ли я вернуть что-то вроде этого:

{
  "code": {
    "value": 4,
    "name": "InvalidRequest"
  },
  "message": "{effectiveDate=Date is invalid. Please choose a valid date}"
}

Или хотя бы сообщение об ошибке.


person Paloma Schkrab    schedule 11.08.2019    source источник
comment
Возможный дубликат @Valid при создании объектов с помощью jackson без контроллера   -  person Michał Ziober    schedule 11.08.2019


Ответы (1)


Это не будет чем-то, что будет решаться Джексоном напрямую. Это то, что будет обрабатывать API проверки более высокого порядка, например валидаторы компонентов.

person Makoto    schedule 11.08.2019