1
我想註冊一個自定義轉換器XMLGregorianCalendars從WS(與XMLGregorianCalendar字段)接收POJO到我的模型(日期對象)轉換。自定義轉換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);
}
}
}
謝謝!
謝謝。我終於爲日期創建了一個JAXB綁定:http://jsfiddle.net/4ppCG/(我的代理塊pastebin) – miguelfdez