как передать дату гггг-мм-дд в теле запроса контроллера весенней загрузки, когда для формата отметки времени по умолчанию установлено другое значение - PullRequest
0 голосов
/ 02 апреля 2019

Я настроил свое приложение, установив формат отметки времени по умолчанию: гггг-мм-дд чч: мм: сс z

@Configuration
@EnableWebMvc
public class KukunWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {

    public MappingJackson2HttpMessageConverter jacksonJsonMessageConverter() {
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();

        ObjectMapper mapper = new ObjectMapper();
        // Registering Hibernate5Module to support lazy objects
        mapper.registerModule(new Hibernate5Module());
        mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"));
        messageConverter.setObjectMapper(mapper);
        return messageConverter;
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(jacksonJsonMessageConverter());

        super.configureMessageConverters(converters);
    }

}

Но я могу передать поле даты из тела запроса, которое дает 400 Bad Request .

Поле Entity Process:

@Entity
@Table(name = "process")
public class Process{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "process_id")
    private Long processId;

    @Column(name = "process_name")
    @NotNull
    private String processname;

    @Column(name = "process_date")
    @Temporal(TemporalType.DATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date processDate;
    //other fields and setter&getter methods
}

метод управления:

@PostMapping
public ResponseEntity<Response> createProcess(
        @RequestBody Process process) throws GenericException {

}

тело запроса:

{
    "processDate":"2019-03-30"
}

Как я могу передать значение даты через тело запроса, если временная метка по умолчанию установлена ​​в конфигурации?

1 Ответ

2 голосов
/ 02 апреля 2019

давайте посмотрим на аннотацию @JsonFormat, чтобы управлять форматом даты для отдельных классов, а не глобально, для всего приложения:

    public class Event {
        public String name;

        @JsonFormat
          (shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss")
        public Date eventDate;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...