XMLGregorianCalendar 필드가있는 모델 객체가 있습니다. 어떻게 그것을 입력 필드에 바인딩 할 수 있습니까?속도가 봄 MVC에서 XMLGregorianCalendar 필드를 바인딩합니다.
문자열 필드를 들어 내가 사용 :
#springFormInput("model.object.stringfield" "")
을하지만,하는 XMLGregorianCalendar에 해당하는 코드를 작동 할 수 없습니다
XMLGregorianCalendar 필드가있는 모델 객체가 있습니다. 어떻게 그것을 입력 필드에 바인딩 할 수 있습니까?속도가 봄 MVC에서 XMLGregorianCalendar 필드를 바인딩합니다.
문자열 필드를 들어 내가 사용 :
#springFormInput("model.object.stringfield" "")
을하지만,하는 XMLGregorianCalendar에 해당하는 코드를 작동 할 수 없습니다
다음은 해결책입니다. 그것은 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);
}
}
당신은 뭔가 처리 할 쉽게하는 XMLGregorianCalendar 변환 더 잘 할 수있다 Calendar or Date을 프리젠 테이션 레이어에 전달해야합니다.
XMLGregorianCalendar 필드가 모델로 사용되는 JAXB 생성 클래스에 있으므로 변환 할 범위가 없습니다 –
글쎄, 당신은 그것에서 무엇을 기대합니까 자동으로 일종의 날짜 선택 도구가 될까요? :) – serg
아니오, 주어진 날짜 형식의 입력 필드를 XMLGregorianCalendar 필드에 바인드 할 것을 기대합니다 ... –