2012-10-01 99 views
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(); 
} 

時間戳在插入操作中生成,我需要它用於刪除操作。我的問題是,在控制器,一旦我試圖刪除最近插入的記錄,該時間戳爲空(但它不是空的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)); 
} 

是否有可能,日期被解析中要顯示具有「dd/MM/yyyy」格式的JSP,並且之後,Spring不知道如何將其再次轉換爲timeStamp?

在doAction方法中,錯誤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] 
+0

  • 使用Date,而不是請更詳細地描述你的問題,以獲得快速和更好的答案 –

  • +0

    沒問題。你需要了解什麼..? – elcadro

    +0

    initbinder應該已經同時生效 - 如果它在屏幕上顯示時將時間戳轉換爲dd/MM/yyyy,它應該也能夠將其轉換回。如果可以使用DEBUG模式運行,請查看是否有更多由Spring打印的信息。還有一件事要嘗試使用java.util.Date –

    回答

    4

    問題被寫入異常:

    屬性編輯[org.springframework.beans.propertyeditors.CustomDateEditor] 返回類型[java.util.Date]

    的不適當的值

    這意味着CustonDateEditor會回退java.util.Date,但您需要Timestamp

    因此,你可以做兩兩件事:

    +0

    您的解決方案似乎很好。我只是用時間戳格式解析一些問題。無論如何,非常感謝! – elcadro