У меня есть @RestController
, который выглядит примерно так:Spring MVC GET @ModelAttribute java.util.Date типа с отметкой времени
@RestController
public class EventSearchController {
@RequestMapping(value = "/api/eventSearch", method = RequestMethod.GET)
public List<EventDTO> eventSearch(@Valid
@ModelAttribute
EventSearchCommand eventSearchCommand) {
// ...
}
}
И мой EventSearchCommand
выглядит следующим образом:
@Data
public class EventSearchCommand {
// other fields that are not a problem here...
private Date startDate;
private Date endDate;
}
@Data
здесь происходит от Project Lombok. Проблема у меня в том, что параметры STARTDATE и ENDDATE приходят на строку GET, как
?endDate=1453784399000&startDate=1453698000000
ли не связывался должным образом, и я получаю эту ошибку:
Failed to convert property value of type java.lang.String to required type java.util.Date for property endDate; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @org.springframework.format.annotation.DateTimeFormat java.util.Date for value 1453784399000; nested exception is java.lang.IllegalArgumentException: Unable to parse 1453784399000
Каких конвертера (или, в идеале, @DateTimeFormat
в проблемных областях) мне нужно написать, чтобы он правильно привязывался?
Я хотел бы отметить, что у меня есть другой контроллер настроить точно так же, за исключением того, объект помечается @RequestBody
вместо @ModelAttribute
и тело запроса является JSON объект, где даты передаются в виде целых чисел, а не строки.
Я думал о том, чтобы делать это раньше, но не был уверен, что это был самый «весенний» способ сделать что-то. Спасибо за ответ. – Andy