我正在尝试为XMLGregorianCalendars注册一个自定义转换器,以将WS接收的POJO(带有XMLGregorianCalendar字段)与我的模型(Date对象)进行对话。
我尝试使用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,还可以使用自定义文件:
https://jaxb.java.net/guide/Using_different_datatypes.html
关于java - 使用BeanUtils自定义将XMLGregorianCalendar转换为Date,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21263566/