【发布时间】:2015-04-28 14:06:38
【问题描述】:
我正在尝试简单的 Spring-MVC 应用程序进行表单验证。我在从浏览器获取日期输入时遇到问题。错误是:
"Failed to convert property value of type java.lang.String to required type java.util.Date for property dob;
nested exception is java.lang.IllegalArgumentException: Could not parse date: Unparseable date: "2015-12-25"
我只在 Google Chrome 浏览器中遇到这个问题。在 Internet Explorer 和 Eclipse 界面中,它工作正常。我正在使用 Chrome-40.0.2214.115m。
我在这里分享我的部分代码:
来自控制器文件:
...
@InitBinder
public void initBinder(WebDataBinder binder){
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
binder.registerCustomEditor(Date.class,new CustomDateEditor(dateFormat, false));
}
...
来自 JSP 文件:
...
<tr>
<td><label for="dob">DOB</label></td>
<td><input type="date" name="dob" /></td>
<td><form:errors path="person1.dob" /></td>
</tr>
...
如果浏览器兼容性有问题,那么解决方法是什么?请帮我解决这个问题。
【问题讨论】:
-
您的
initBinder方法需要一个包含斜线 (/) 字符的日期,并且您已经输入了一个包含连字符的日期。修复输入,或更改预期格式以匹配它。怀疑你必须做后者,可能是通过一些浏览器检测......或者如果第一个失败,则尝试不同的格式。 -
@JonK 嗨,我没有提供格式 (..-..-....) 的输入。在错误消息中,只有它的显示是这样的
-
错误消息告诉您它尝试解析失败的内容 - 连字符分隔的日期是您的
initBinder方法收到的内容 -
在 chrome 中只有它的显示问题:(
-
如果您确定错误仅在 Chrome 中显示,而在其他浏览器中不显示,同时使用 IDENTICAL 输入表明其他浏览器中存在错误。
标签: java spring google-chrome spring-mvc