0

XMLGregorianCalendarフィールドを持つモデルオブジェクトがあります。どうすれば入力フィールドにバインドできますか?

私が使用している文字列フィールドの場合:

#springFormInput("model.object.stringfield" "")

しかし、XMLGregorianCalendarの対応するコードを理解することはできません

4

2 に答える 2

0

XMLGregorianCalendarを、プレゼンテーション層に渡す前に、カレンダーや日付などの扱いやすいものに変換した方がよい場合があります。

于 2010-11-03T15:48:16.633 に答える
0

これが解決策です。jodatimeを使用しますが、おそらく次のように変更することはできません。

ビュー(この場合は速度)の場合:

#springFormInput("model.object.xmlgregoriancalendar.field" "")

コントローラの場合:

@InitBinder
public void binder(WebDataBinder binder) {
    binder.registerCustomEditor(XMLGregorianCalendar.class, new PropertyEditorSupport() {
       public void setAsText(String value) {
           setValue(createXMLGregorianCalendar(value));
        }

        public String getAsText() {
            return new SimpleDateFormat("dd/MM/yyyy").format(((XMLGregorianCalendar)getValue()).toGregorianCalendar().getTime());
        }  
    });
}

private XMLGregorianCalendar createXMLGregorianCalendar(String date) {
    LocalDateTime result = DateTimeFormat.forPattern("dd/MM/yyyy").parseDateTime(date).toLocalDateTime();
    return xmlDF().newXMLGregorianCalendar(result.toDateTime().toGregorianCalendar());
}


private static DatatypeFactory xmlDF() {
    try {
        return DatatypeFactory.newInstance();
    } catch (DatatypeConfigurationException ex) {
        throw new RuntimeException(ex);
    }
}
于 2010-11-04T11:18:35.237 に答える