0

我有一个插入/更新数据的表单。命令对象 (Bean) 类有一个 Date 字段,该字段以如下形式放置:

<form:hidden path="createdDate">

当我提交表单时,BindResult.hasErrors() 被验证为真。

我想我需要绑定日期对象,但是命令对象字段是怎么做的呢?

表单bean代码如下

@Entity
@Table(name = "Employee")

public class Employee {

    @Id
    @GeneratedValue
    @Column(name="id")
    private int id;

    @Column(name="EmployeeName")
    private String employeeName;

    @Column(name="CreatedDate")
    private Date createdDate;

    //Setter and getter methods 
}

错误:

[Field error in object 'employee' on field 'CreatedDate': rejected value [Mon Sep 17 20:35:26 IST 2012]; codes [typeMismatch.employee.CreatedDate,typeMismatch.CreatedDate,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [subject.CreatedDate,CreatedDate]; arguments []; default message [CreatedDate]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'CreatedDate'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'CreatedDate': no matching editors or conversion strategy found]]
4

2 回答 2

2

将此注释添加到您的日期字段:

@Column(name="CreatedDate")
@DateTimeFormat(pattern="yyyy/MM/dd hh:mm:ss") //whatever format is appropriate to you..
private Date createdDate;

确保您将 joda time 作为依赖项,并且该库存在于类路径中。它将自动注册一个转换器来处理转换。

于 2012-09-17T16:00:00.723 回答
0

我发现了你的问题。在您的 Employee 模型类中,createdDate 字段未正确定义。您需要使用@Temporal 注释来定义该字段的类型为日期。

请将以下注释也放在 createdDate 的字段声明之上

@Temporal(TemporalType.TIMESTAMP)

我认为这应该可以解决您的问题。干杯。

于 2012-09-17T07:30:18.237 回答