2014-01-21 9 views
1

XMLGregorianCalendars에 대한 사용자 정의 변환기를 등록하여 WS (XMLGregorianCalendar 필드 사용)에서 수신 한 POJO에서 내 모델 (Date 객체)으로 변환하려고합니다.사용자 정의 XMLGregorianCalendar를 BeanUtils로 날짜로 변환

속성을 XMLGregorianCalendar.class로 처리하려고 등록했지만 익명 클래스 인 것 같아서 실행 시간이 XMLGregorianCalendarImpl.class로 감지되어 내 사용자 지정 변환기가 트리거되지 않습니다.

어떻게 변환합니까? 그것은 "볼 수"클래스가 아니기 때문에 나는 ... XMLGregorianCalendarImpl.class에 여기

을 등록 할 수 있습니다 내 코드입니다 :

[…] 
ConvertUtils.register(new XMLGregorianCalendarConverter(), XMLGregorianCalendar.class); 
BeanUtils.copyProperties(result, original); 
[…] //”result” is a object from my model with Date properties and “original” a pojo with properties with the same name but with XMLGregorianCalendar. 

XMLGregorianCalendarConverter.class :

import javax.xml.datatype.XMLGregorianCalendar; 
import org.apache.commons.beanutils.converters.DateConverter; 

public class XMLGregorianCalendarConverter implements org.apache.commons.beanutils.Converter{ 

     private DateConverter dateConverter = new org.apache.commons.beanutils.converters.DateConverter(); 

     @SuppressWarnings("unchecked") 
     @Override 
     public <T> T convert(Class<T> type, Object value) { 
      if(value == null || value.toString().length() < 1) 
        return null; 

      if(type.toString().contains("XMLGregorianCalendar")){ 
        XMLGregorianCalendar xmldate = (XMLGregorianCalendar) value; 
        return (T) xmldate.toGregorianCalendar().getTime(); 
      }else{ 
        return dateConverter.convert(type, value); 
      } 
     } 

} 

감사합니다! 대신 당신이 사용자 지정 파일을 사용할 수의 XMLGregorianCalendar 작업의

답변