2010-03-22 2 views
0

XMLGregorianCalendar 필드가있는 모델 객체가 있습니다. 어떻게 그것을 입력 필드에 바인딩 할 수 있습니까?속도가 봄 MVC에서 XMLGregorianCalendar 필드를 바인딩합니다.

문자열 필드를 들어 내가 사용 :

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

을하지만,하는 XMLGregorianCalendar에 해당하는 코드를 작동 할 수 없습니다

+0

글쎄, 당신은 그것에서 무엇을 기대합니까 자동으로 일종의 날짜 선택 도구가 될까요? :) – serg

+0

아니오, 주어진 날짜 형식의 입력 필드를 XMLGregorianCalendar 필드에 바인드 할 것을 기대합니다 ... –

답변

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); 
    } 
} 
0

당신은 뭔가 처리 할 쉽게하는 XMLGregorianCalendar 변환 더 잘 할 수있다 Calendar or Date을 프리젠 테이션 레이어에 전달해야합니다.

+0

XMLGregorianCalendar 필드가 모델로 사용되는 JAXB 생성 클래스에 있으므로 변환 할 범위가 없습니다 –

관련 문제