以下是请求fullcalendar js发送到服务器。
http://localhost:8080/NVB/rest/calendar/events?start=1425168000&end=1428796800 400
如何在Spring Request Param中指定日期模式(@DateTimeFormat
)以将此时间转换为Date对象。我尝试了不同的模式,但得到了405 Bad Request。
@RequestMapping(value = "/events", method = RequestMethod.GET)
public @ResponseBody List<EventDto> addOrder(@RequestParam(value = "start") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date start,
@RequestParam(value = "end") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date end) {
LOGGER.info("Requesting event from [{}] to [{}]", start, end);
return new LinkedList<EventDto>();
}
答案 0 :(得分:2)
由于时间戳不是格式化的日期(通过Java的SimpleDateFormat
选项),而是更多的数值:我建议为Date对象创建一个自定义数据绑定器,如果你这样做的话比这个单一的例子。见http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#portlet-ann-webdatabinder
作为一次性解决方案,您可以将它们绑定到Long
个参数,并使用new Date(start)
创建自己的Date对象。
答案 1 :(得分:0)
使用@InitBinder
和WebDataBinder
:
@RestController
public class SimpleController {
//... your handlers here...
@InitBinder
public void initBinder(final WebDataBinder webdataBinder) {
webdataBinder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
@Override
public void setAsText(String text) throws IllegalArgumentException {
setValue(new Date(Long.valueOf(text)));
}
});
}
}