Обрабатывает исключение при размещении @JsonFormat в файле сопоставления json.Получение исключения с 400

#java #spring-boot #fasterxml

#java #весенняя загрузка #fasterxml

Вопрос:

Я поместил @JsonFormat аннотацию в свой файл сопоставления json при сопоставлении с json To class . Я получаю HttpMessageNotReadableException и InvalidFormatException исключения с сообщением об ошибке синтаксического анализа.

Ниже приведен код для ссылки:

     import java.util.Date;
    import java.util.List;

    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Pattern;
    import javax.validation.constraints.Size;

    import org.hibernate.validator.constraints.Email;

    import com.fasterxml.jackson.annotation.JsonFormat;
    import com.fasterxml.jackson.annotation.JsonInclude;

    import lombok.Getter;
    import lombok.NoArgsConstructor;
    import lombok.Setter;
    import lombok.ToString;

    @Setter
    @Getter
    @ToString
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @NoArgsConstructor
    public class Request {

        @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
        private Date customerDOB;

    }
  

Я пытался обработать вышеуказанные исключения, но получаю bad request(400) . Пожалуйста, помогите мне обработать указанное выше исключение.

Комментарии:

1. Пожалуйста, добавьте более подробную информацию о вашей проблеме, например, добавьте больше кода, соответствующая информация поможет людям лучше понять проблему и эффективно предоставить решение.

2. Я добавил @JsonFormat(форма = JsonFormat. Форма. СТРОКА, шаблон = «гггг-ММ-дд») личная дата customerDOB; во время синтаксического анализа я получаю исключение, но при получении postman 400, если я предоставляю 2019-Mar-04 в качестве customerDOB. Я хочу сообщение на postman вместо 400.

3. передайте данные запроса как 2019-03-04 и проверьте

4. Сервер отвечает с 400 правильно. 400 — неверный запрос, и пользователь не должен повторять запрос без каких-либо изменений. developer.mozilla.org/en-US/docs/Web/HTTP/Status/400

5. Я хочу обработать 400, чтобы пользователь мог видеть, какая именно ошибка возникает, для чего я добавил @SuppressWarnings(«непроверенный») защищенный ResponseEntity<Object> handleMethodInvalidFormatException(InvalidFormatException ex, заголовки HttpHeaders, статус HttpStatus, запрос WebRequest) { String ErrorCode = MessageSource.GetMessage(«config.generic. Код ошибки», null, null); String ErrorMessage = ex.GetMessage(); return (ResponseEntity<Object>) CreateErrorResponse(код ошибки, сообщение ошибки, HttpStatus. OK); } Но все еще не может обработать исключение

Ответ №1:

Как насчет того, чтобы добавить @ExceptionHandler для этих исключений, и тогда у вас будет полный контроль над тем, какой код состояния и тело отправлять обратно в качестве ответа