繁体   English   中英

使用BeanUtils自定义将XMLGregorianCalendar转换为Date

[英]Custom convert XMLGregorianCalendar to Date with BeanUtils

我正在尝试注册XMLGregorianCalendars的自定义转换器,以将WS(带有XMLGregorianCalendar字段)接收到的POJO与我的模型(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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM