0

Web フォームと Spring コントローラーの間で Date 値をやり取りするのに苦労しています。この値が文字列として渡された場合はすべて正常に機能していましたが、論理的には「日付」値だったので、日付に変更するとすべてがうまくいきました。

ここに示されている修正を試みましたが、うまくいきませんでした。

実行時に(「locale.js」から)発生するエラーは次のとおりです。

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

このページは、Spring Forms タグ (form:form、form:input など) を含む JSP を使用して構築され、クライアント側の検証は、Dojo Javascript ライブラリーに依存する SpringValidation デコレーターを使用して行われます。

私が渡しているフィールドは次のとおりです。

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

Javascript/Dojo クライアント側の検証コードは次のとおりです。

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 の内部のどこかで発生しています。「日付」を渡すと失敗する理由がわかりませんが、日付値を含む「文字列」を渡すと機能します。

4

1 に答える 1

0

問題は、フォーム バッキング オブジェクトの Date プロパティの @DateTimeFormat であることが判明しました。これはうまくいきませんでした:

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

しかし、これはしました:

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

どうやら Javascript と Dojo DateTextBox は、日付形式に関して非常にうるさいようです。

于 2013-03-03T00:09:21.133 に答える