0

次のjQuery関数を使用して、日付ピッカーをフォーマットします

$(".datepicker").datepicker({
                    dateFormat : "MM yy"
                }).attr('readonly', true);

選択すると、テキスト フィールドが正しく設定されていることがわかりますNovember 2013。フォームが送信される前に、Spring検証を使用して日付を検証しています

public class LocalMonthEditor extends PropertyEditorSupport {
    @Override
    public void setAsText(final String text) throws IllegalArgumentException {
        if (!StringUtils.hasText(text)) {
            // Treat empty String as null value.
            setValue(null);
        } else {
            LocalDateTime localDateTime = LocalDateTime.parse(text,
                    DateTimeFormat.forPattern("MMMM yyyy"));
            setValue(localDateTime);
        }
    }

    @Override
    public void setValue(final Object value) {
        super.setValue(value == null || value instanceof LocalDateTime ? value
                : new LocalDateTime(value));
    }

    @Override
    public LocalDateTime getValue() {
        return (LocalDateTime) super.getValue();
    }

    @Override
    public String getAsText() {
        return getValue() != null ? getValue().toString() : "";

    }
}

ただし、フォームが送信された後、テキスト フィールドは に変更され2013-11-01T00:00:00.000ます。フィールドを に維持するにはどうすればよいNovember 2013ですか?

4

2 に答える 2

0

現地時間オブジェクトをテキスト フィールドに直接設定しているため、完全な日付文字列を取得しています。parse() メソッドを使用して日付オブジェクトを変換し、設定します。値を直接設定する日付の新しいオブジェクトを作成しないでください。

于 2013-11-04T17:53:06.777 に答える