0

我正在尝试使用时间戳。我在jsp中定义了一个bean的隐藏变量。

<form:input type="hidden" path="timeStamp" />

private Timestamp timeStamp;

public final Timestamp getTimeStamp() {
return (timeStamp == null)
? null : (Timestamp) timeStamp.clone();
}

public final void setTimeStamp(Timestamp timeStamp) {
this.timeStamp = (timeStamp == null)
? null : (Timestamp) timeStamp.clone();
}

时间戳是在插入操作中生成的,我需要它用于删除操作。我的问题是,在控制器中,一旦我尝试删除最近插入的记录,这次 timeStamp 为空(但它在 jsp 中不为空)

public final void doActionDelete(DumyBean bean, Errors errors, ActionRequest actionrequest...)

bean.timeStamp 等于 null?? 我确定时间戳在jsp中,所以我猜问题出在数据转换上。

(已编辑:)我认为问题在于 initBinder 方法,我正在做这样的事情......

@InitBinder
public final void initBinder(WebDataBinder binder) {

    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    dateFormat.setLenient(false);

    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}

有没有可能,日期被解析为在 JSP 中以“dd/MM/yyyy”格式显示,之后 spring 不知道如何再次将其转换为时间戳?

在 doAction 方法中,errors var 显示了这个错误,这似乎是我所说的问题,但我不知道如何解决它。

"Failed to convert property value of type 'java.lang.String' to required type 'java.sql.Timestamp' for property 'timeStamp'; 
nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type
[java.sql.Timestamp] for property 'timeStamp': PropertyEditor [org.springframework.beans.propertyeditors.CustomDateEditor] 
returned inappropriate value of type [java.util.Date]
4

1 回答 1

4

问题写在异常中:

PropertyEditor [org.springframework.beans.propertyeditors.CustomDateEditor] 返回了 [java.util.Date] 类型的不适当值

这意味着CustonDateEditorretuns ajava.util.Date但你需要 a Timestamp

因此,您可以做两件事:

于 2012-10-02T08:18:08.787 回答