我的项目有问题。当我总结[start_date_time] => Cake\I18n\Time Object
(
[time] => 2016-02-01T01:00:00+00:00
[timezone] => UTC
[fixedNowTime] =>
)
以保存UserForm
时,会出现以下错误:
无法将java.lang.String类型的属性值转换为必需值 输入属性birthDay的java.util.Date;嵌套异常是 org.springframework.core.convert.ConversionFailedException:失败 从类型java.lang.String转换为类型java.util.Date类型 2016年3月26日;嵌套异常是java.lang.IllegalArgumentException
此处归档UserForm.jsp
User
此处提交User.java文件
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html>
<head>
<title>Add New User</title>
</head>
<body>
<h2>Please Input User Information</h2>
<form:form method="POST" modelAttribute="User" action="/user/save">
<table>
<tr>
<td><form:label path="userName">UserName</form:label></td>
<td><form:input path="userName"/></td>
<td><form:errors path="userName" /></td>
</tr>
<tr>
<td><form:label path="passWord">Password</form:label></td>
<td><form:input path="passWord"/></td>
<td><form:errors path="passWord" /></td>
</tr>
<tr>
<td><form:label path="birthDay">Birthday</form:label></td>
<td><form:input path="birthDay" type = "date"/> </td>
<td><form:errors path="birthDay"/> </td>
</tr>
<tr>
<td><form:label path="age">Age</form:label>
<td><form:input path="age" type = "number"/> </td>
<td><form:errors path="age"></form:errors> </td>
</tr>
<tr>
<td><form:label path="gender">Gender</form:label></td>
<td><form:select path="gender">
<form:options items="${allgender}" itemLabel="gender"/>
</form:select></td>
<td><form:errors path="gender"></form:errors></td>
</tr>
<tr><td colspan="3"><input type="submit" value="Submit" /></td></tr>
</table>
</form:form>
</body>
</html>
答案 0 :(得分:1)
Spring无法将请求参数字符串转换为包含java.util.Date
对象的日期(和时间)信息的对象。
Becaue Spring不知道如何将日期字符串转换为Date对象,因为日期格式可能因区域设置而异
Spring已CustomDateEditor为您转换此内容。您只需要注册日期格式。
您应该使用@InitBinder
注册日期格式 @InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yourdateformat"); //yyyy-MM-dd'T'HH:mm:ssZ example
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}