1、The Main Q:使用 BeanUtils.copyProperties(locate, monitor);其中Date类型不匹配报出错误如下:
13-07-25 15:00:02 org.apache.commons.beanutils.converters.DateTimeConverter toDate
警告: DateConverter does not support default String to 'Date' conversion.
2、原因分析:
monitor对象是通过webservice获取到的它的时间类型获取到的对象是XMLGregorianCalendar而不是java.util.Date;故转化错误。
3、解决方案:在系统中初始化一个时间格式转化的对象,如果是Spring可以直接注入,非Spring注入方式可以使用static在加载数据转化的类之前初始化该类。代码如下:
package com.kvt.lbs.utils;
import java.util.Date;
import javax.xml.datatype.XMLGregorianCalendar;
import org.apache.commons.beanutils.Converter;
/**
* 日期转换工具
* <li>文件名称: DateConvert</li>
* <li>文件描述: $日期转换类</li>
* <li>内容摘要: 包括日期转换类的说明</li>
* <li>完成日期:2013-7-25</li>
* <li>修改记录1:boonyachengdu@gmail.com</li>
*
*/
public class DateConvert implements Converter
{
@SuppressWarnings("rawtypes")
public Object convert(Class type, Object value)
{
if(value == null){
return (null);
}
Date dateObj = null;
if(value instanceof XMLGregorianCalendar){
dateObj =((XMLGregorianCalendar) value).toGregorianCalendar().getTime();
}else if(value instanceof Date){
dateObj=(Date) value;
}
return dateObj;
}
}
在Action调用之前初始化:
static{
//注册DateConvet
ConvertUtils.register(new DateConvert(),java.util.Date.class);
}