0

我有一个带有 XMLGregorianCalendar 字段的模型对象。如何将其绑定到输入字段?

对于我正在使用的字符串字段:

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

但无法计算出 XMLGregorianCalendar 的相应代码

4

2 回答 2

0

在将 XMLGregorianCalendar传递给表示层之前,最好将其转换为更容易处理的内容,例如Calendar 或 Date 。

于 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 回答