【问题标题】:Error: Failed to convert property value of type java.lang.String to required type java.util.Date for property dob?错误:无法将 java.lang.String 类型的属性值转换为属性 dob 所需的 java.util.Date 类型?
【发布时间】: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


【解决方案1】:

输入标签日期格式总是像YYYY-MM-DD。因此,在格式化为 SimpleDateFormat 时使用此 yyyy-MM-dd 更改您的格式模式。

那就试试这个

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

【讨论】:

  • 谢谢Harshal...它现在可以工作了:)但我不明白..在接受输入时(通过日历界面)yts采用d格式../../....和同时以 ..-..-.. 格式显示其
  • @Madhusudan 格式与 / 仅适用于 ui 但实际上值进来 - 根据标签标准的格式
猜你喜欢
  • 1970-01-01
  • 2018-08-21
  • 2017-05-06
  • 2015-03-29
  • 2021-06-26
  • 1970-01-01
  • 2014-07-05
  • 2021-06-13
  • 1970-01-01
相关资源
最近更新 更多