Я пытаюсь создать сайт, используя Spring + Angular JS, и моя текущая проблема заключается в том, что я использовал POSTMAN, чтобы опубликовать оператор JSON, как показано ниже:
{
"id": 12345,
"checkin" : "2017-03-01",
"checkout" : "2017-03-05"
}
и затем появляется эта ошибка:
введите описание изображения здесь
"Ошибка определения типа: [простой тип, класс java.time.LocalDate]; вложенное исключение - com.fasterxml.jackson.databind.exc.InvalidDefinitionException: невозможно создать экземпляр java.time.LocalDate
(без создателей, как конструкция по умолчанию, существовать): нет конструктора аргумента String / метода фабрики для десериализации из значения String ('2017-03-01') "
Код ресурса:
@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'