2013-02-28 53 views
0

我很努力地從Web表單中獲取日期值到Spring控制器。一切工作正常,作爲一個字符串傳遞的值,但由於它在邏輯上是一個「日期」值,我將它更改爲一個日期,一切都變成了kerflooey。Dojo/Spring DateTextBox初始化失敗,使用Date值,與String一起使用?

我嘗試了修復指示here,但它沒有奏效。

這是我在運行時出現錯誤(從「locale.js」):(:形式,形式爲:輸入等形式)和

Uncaught TypeError: Object 2/28/13 has no method 'getMonth' 

該頁面使用JSP和Spring表單標籤內置客戶端驗證使用依賴於Dojo Javascript庫的SpringValidation裝飾器完成。

下面是我傳遞現場:

@NotEmpty 
@DateTimeFormat(style="S-") 
private Date startDate; 

下面是使用Javascript /道場客戶端驗證碼:

Spring.addDecoration(new Spring.ElementDecoration({ 
    elementId : "startDate", 
    widgetType : "dijit.form.DateTextBox", 
    widgetAttrs : { 
     missingMessage : parms.required, 
     invalidMessage : parms.wrongFormatMessage, 
     required : true, 
     regExp : parms.textFieldPattern } 
})); 

而這裏的實際形式標籤:

<form:input id="startDate" path="startDate" /> 

有人有什麼想法嗎?它發生在Dojo/Spring的某個地方,我不確定爲什麼如果我將它傳遞給一個「日期」會失敗,但如果我將它傳遞給一個包含日期值的「字符串」,它就會工作。

回答

0

問題原來是表單支撐物體上的日期屬性的@DateTimeFormat。這不起作用:

@DateTimeFormat(style="S-") 
private Date startDate; 

但這:

@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) 
private Date startDate; 

顯然,JavaScript和Dojo的文字框是非常挑剔的日期格式。