SPRING MVC DateTimeFormat错误

时间:2018-05-02 06:22:21

标签: java spring spring-mvc datetime-format

我试图使用Spring + Angular JS创建一个网站,我目前的问题是我使用POSTMAN发布一个JSON语句如下:

{
    "id": 12345,
    "checkin" : "2017-03-01",
    "checkout" : "2017-03-05"
}

然后弹出此错误: enter image description here

"类型定义错误:[simple type,class java.time.LocalDate];嵌套异常是com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造java.time.LocalDate的实例(没有创建者,如默认构造,存在):no String-argument构造函数/工厂方法从String值反序列化(& #39; 2017年3月1日')"

资源代码:

@RequestMapping(path = "", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
        consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<ReservationResponse> createReservation(
        @RequestBody
        ReservationRequest reservationRequest){
    return new ResponseEntity<>(new ReservationResponse(), HttpStatus.CREATED);
}

型号代码:

public class ReservationRequest {
    private Long id;
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
    private LocalDate checkin;
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
    private LocalDate checkout;}

APIConfig代码:

@Bean
@Primary
public ObjectMapper objectMapper() {
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.registerModules(new JavaTimeModule());
    return new ObjectMapper();
}

应用程序属性:

spring.jackson.serialization.write-dates-as-timestamps=false

构建Gradle:

compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.8.7'

2 个答案:

答案 0 :(得分:0)

我们也面临同样的问题,在定义转换器之后它运行良好。您可以在应用程序中添加以下代码,它应该可以正常工作。您可以根据需要更改日期格式。

NullReferenceException

答案 1 :(得分:0)

我正在完成同一教程,并且遇到了相同的问题。使我的代码起作用的原因是将API配置代码中objectMapper()方法的返回值从new ObjectMapper()更改为objectMapper