java - 使用 BeanUtils 自定义将 XMLGregorianCalendar 转换为日期

标签 java web-services converters apache-commons-beanutils

我正在尝试为 XMLGregorianCalendars 注册一个自定义转换器,以将 WS 接收到的 POJO(带有 XMLGregorianCalendar 字段)转换为我的模型(日期对象)。

我尝试使用 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 转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263566/

相关文章:

json - 将 pouchDB 与 json 数据同步

python - 如何从iOS应用程序调用Python的ladon框架开发的Web服务?

ios - Plist 到 SQLITE

java - 值未分配给字节

java - 从 Java SE 程序调用 Web 服务方法

java - 如何使用 Selenium 3.3.1 获取 Safari 10 主要版本号?

android - 将 FormatDate.MEDIUM 转换为 Java 中的其他格式(LocalDate)

转换 double < -> char

java - obj == null 与 null == obj

java - CORBA-JacORB : Use fixed port generating IOR?