我有一个GET请求,它将YYYY-MM-DD格式的日期发送给Spring Controller.控制器代码如下:
@RequestMapping(value="/fetch" , method=RequestMethod.GET)
public @ResponseBody String fetchResult(@RequestParam("from") Date fromDate) {
//Content goes here
}
Run Code Online (Sandbox Code Playgroud)
正在我使用Firebug进行检查时,请求已正确发送.我收到错误:
HTTP状态400:客户端发送的请求在语法上不正确.
如何让控制器接受这种格式的日期?请帮忙.我究竟做错了什么?
我正在使用Spring Framework作为我的服务API和org.joda.time.DateTime日期时间解析.具体来说,我正在使用ISOFormatter.dateOptionalTimeParser(),它允许用户灵活地使用日期,或日期和时间,这是一个要求.
相信我,我已经看到了所有这些相关的问题,我已经可以告诉人们会指出我,例如这个和这个,等等.
以前,我正在使用日期String,然后使用上面提到的服务层中的joda格式化程序处理它,但现在我想在控制器中添加请求验证,这意味着如果请求在语法上不正确,请求不应该甚至去服务层.
我已经尝试过使用多种变体@DateTimeFormat(iso = ISO.DATE_TIME),以及pattern在没有运气的情况下指定格式的字符串,无论如何.
@RequestMapping(value = URIConstants.TEST_URL, method = RequestMethod.GET)
public @ResponseBody String getData(@RequestParam(required = false) DateTime from,
@RequestParam(required = false) DateTime to) {
return dataService.fetchDataFromDB(from, to);
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能确保我从用户那里得到的日期符合ISO 8601 dateOptionalTime格式?我可以应用多种模式来实现这个吗?