我在我的Spring应用程序中有一个REST端点,它看起来像这样
@RequestMapping(value="/customer/device/startDate/{startDate}/endDate/{endDate}", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
public Page<DeviceInfo> getDeviceListForCustomerBetweenDates(@PathVariable ZonedDateTime startDate, @PathVariable ZonedDateTime endDate, Pageable pageable) {
... code here ...
}
我已经尝试将路径变量作为毫秒和秒传递。 但是,我无论以哪种方式传递都会得到以下异常:
"Failed to convert value of type 'java.lang.String' to required type 'java.time.ZonedDateTime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @org.springframework.web.bind.annotation.PathVariable java.time.ZonedDateTime for value '1446361200'; nested exception is java.time.format.DateTimeParseException: Text '1446361200' could not be parsed at index 10"
请问如何将字符串(如1446361200)传入(以秒或毫秒为单位),并将其转换为ZonedDateTime?
还是说唯一的方法是将其作为字符串传递,然后自己进行转换?如果是这样的话,是否有通用的方法来处理多个具有类似设计的方法?
ZonedDateTime
是相对较新的,Spring可能尚未直接支持它。请参考JasonZ的答案以获取解决此问题的方法。 - Powerlord