1
. Apache BeanUtils只支持8种基本数据类型,对于其它类型则要注册转换器,以下以Data为实例
第一种,直接使用Apache 公司实现好了Converer的实现类的转换器,其它实现可以参阅API文档,
ConvertUtils.register(new DateLocaleConverter() , Date.class);//但此转换器,有个BUG,不能传空 “” ,
当类型转换时,首先应查BeanUtils API中是否有提供相应转换器,若没有则进行下面的自己编写转换器。
第二种,用户定义转换器 ConvertUtils.register(converter,clazz);将 register --->指定类型 :
public static void copyBean(Object src,Object dest){
//以下注册 日期 转换器,不能直接用SimpleDateFormat,因为 SimpleDateFormat不检测空的情况
ConvertUtils.register(new DateLocaleConverter() , Date.class);//但此转换器,有个BUG,不能传空 “” ,
当类型转换时,首先应查BeanUtils API中是否有提供相应转换器,若没有则进行下面的自己编写转换器。
第二种,用户定义转换器 ConvertUtils.register(converter,clazz);将 register --->指定类型 :
public static void copyBean(Object src,Object dest){
//以下注册 日期 转换器,不能直接用SimpleDateFormat,因为 SimpleDateFormat不检测空的情况
ConvertUtils.register(new Converter(){ //注意转换器并同时实现接口方法
},
Date.class
);
//Converter是接口,内部实现
//至此是注册日期类型转换器的过程
public
<T> T convert(Class
<T> type, Object value) {
//泛型定义有待学习 //传递的是对象,为什么呢,不是类
if(value==null){
//对数据进行null,"",string的检验
return null;
}
if(
!(value instanceof String)){
//
ConvertUtils.register
只支持 S
tring类型到Date类型转换
throw new ConversionException("只支持String类型转换!");
}
String str=(String) value;
if(str.trim().equals("")){
return null;
}
SimpleDateFormat df=new
SimpleDateFormat("yyyy-MM-dd");
try{
return
(T)
df.parse(str);
}catch(Exception e){
throw new RuntimeException(
e);
//异常键不能断,运行时异常
}
}
//至此是注册日期类型转换器的过程
try {
BeanUtils.copyProperties(dest, src);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
BeanUtils.populate(bean,map)