【问题标题】:Error: org.springframework.core.convert.ConversionFailedException. How fix it ?错误:org.springframework.core.convert.ConversionFailedException。怎么修?
【发布时间】:2016-07-11 20:46:40
【问题描述】:

我的项目有问题。当我提交UserForm 以保存User 时,会出现以下错误:

无法将 java.lang.String 类型的属性值转换为必需的 输入 java.util.Date 作为属性birthDay;嵌套异常是 org.springframework.core.convert.ConversionFailedException: 失败 从 java.lang.String 类型转换为 java.util.Date 类型以获得值 2016-03-26;嵌套异常是 java.lang.IllegalArgumentException

这里是UserForm.jsp文件

<%@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>

这里是User.java文件

package edu.java.spring.service.user.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity
//@Table(name = "user",uniqueConstraints={@UniqueConstraint(columnNames="username")})
public class User {
//  @Column(name = "gender", nullable = false)
//  @Enumerated(EnumType.STRING)
    public Gender getGender() {
        return gender;
    }
    public void setGender(Gender gender) {
        this.gender = gender;
    }
//  @Id
//  @GeneratedValue(strategy = GenerationType.IDENTITY)
//  @Column(name = "username", unique = true, nullable = false)
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
//  @Column(name = "password", nullable = false)
    public String getPassWord() {
        return passWord;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
//  @Column(name = "birthday", nullable = false)
    public Date getBirthDay() {
        return birthDay;
    }

    public void setBirthDay(Date birthDay) {
        this.birthDay = birthDay;
    }
//  @Column(name="age", nullable = false)
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    private String userName;
    private String passWord;
    private Date birthDay;
    private Integer age;
    private Gender gender;


}

【问题讨论】:

    标签: spring hibernate jetty


    【解决方案1】:

    Spring 无法将请求参数字符串转换为包含日期(和时间)信息的对象到java.util.Date 对象。

    因为 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));
        }
    

    【讨论】:

    • @DatB.Pham 您可以将其发布为答案,以帮助其他人在遇到类似问题时
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 2017-08-20
    • 2021-11-04
    • 2019-05-31
    • 2017-12-20
    • 2020-02-26
    • 1970-01-01
    相关资源
    最近更新 更多