我正在尝试以以下格式在我的网址中传递日期:2014/12/12
所以我的网址看起来像是:
http://192.0.0.1/api/getdata?date=2014-12-12
我的控制器方法如下所示:
public Iterable<Object> getObject(
@RequestParam(value = "date", required = false)
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date date)
我收到了tomcat 错误
<b>description</b>
<u>The request sent by the client was syntactically incorrect.</u>
我想如果我使用的是预先配置的日期模式,解析日期就没有问题了吗?
The request sent by the client was syntactically incorrect using @DateTimeFormat
我看过上面类似的问题。但问题是使用未预先配置的MM / yy。我还需要自定义日期反序列化器吗?
答案 0 :(得分:2)
Spring支持rest URL,因此您要传递的日期格式将分为3个部分。 使用此格式无法在URL中发送日期。您需要更改要传递的日期格式。
答案 1 :(得分:1)
格式yyyy / MM / dd是传递日期的错误格式,因为Sambhunath提到的原因。但是,如果您必须使用此格式,则应注册您的活页夹
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
并从参数中删除@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
注释。
另一件事是,如果你想使用yyyy-MM-dd
格式,你的问题不明确,在这种情况下你的代码很好,而你的问题就是你的请求中的错误。从
&
http://192.0.0.1/api/getdata?&date=2014-12-12
所以做到这一点
http://192.0.0.1/api/getdata?date=2014-12-12