Я использую Spring загрузки и включены jackson-datatype-jsr310
с Maven:Как использовать LocalDateTime RequestParam весной? Я получаю «Не удалось преобразовать строку в LocalDateTime»
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.7.3</version>
</dependency>
Когда я пытаюсь использовать RequestParam с Java 8 типа Дата/Время
@GetMapping("/test")
public Page<User> get(
@RequestParam(value = "start", required = false)
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime start) {
//...
}
и протестировать его с этим URL:
/test?start=2016-10-8T00:00
Я получаю следующее сообщение об ошибке:
{
"timestamp": 1477528408379,
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.web.method.annotation.MethodArgumentTypeMismatchException",
"message": "Failed to convert value of type [java.lang.String] to required type [java.time.LocalDateTime]; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.web.bind.annotation.RequestParam @org.springframework.format.annotation.DateTimeFormat java.time.LocalDateTime] for value '2016-10-8T00:00'; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [2016-10-8T00:00]",
"path": "/test"
}
Уверен, но есть одна серьезная проблема: зачем использовать пользовательский контроллер, если для большинства этих запросов вы можете использовать Spring JPA Repositories? И это место, когда на самом деле возникает проблема с этой ошибкой:/ – thorinkor
Вы также можете использовать это решение в методе подписи: '@RequestParam @DateTimeFormat (iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime start' – Anna
@ Решение Anna отлично работало для меня – MatanRubin