Привязать поле XMLGregorianCalendar в Spring MVC со скоростью - PullRequest
0 голосов
/ 22 марта 2010

У меня есть объект модели с полем XMLGregorianCalendar.Как я могу привязать его к полю ввода?

Для строковых полей я использую:

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

, но не могу обработать соответствующий код дляXMLGregorianCalendar

Ответы [ 2 ]

0 голосов
/ 04 ноября 2010

Вот решение. Он использует 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);
    }
}
0 голосов
/ 03 ноября 2010

Возможно, вам лучше преобразовать XMLGregorianCalendar во что-то более простое в обращении, например Календарь или Дата , прежде чем передавать его на уровень представления.

...