我有一个带有XMLGregorianCalendar字段的模型对象。如何将其绑定到输入字段?
对于我正在使用的字符串字段:
#springFormInput("model.object.stringfield" "")
但无法计算出XMLGregorianCalendar的相应代码
答案 0 :(得分:0)
最好将XMLGregorianCalendar转换为更容易处理的内容,例如Calendar or Date,然后再将其移交给表示层。
答案 1 :(得分: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);
}
}