BeanUtils.copyProperties时日期的拷贝

首先定义一个Converter的Date实现类
import java.util.Date;

import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.beanutils.Converter;

import cn.sh.cares.commons.excel.util.ExcelUtils;

public class DateConverter implements Converter {

    
public Object convert(Class type, Object value) {
    
if(value == null) {
        
return null;
    }
    
    
if(value instanceof Date) {
        
return value;
    }
    
    
if(value instanceof Long) {
        Long longValue 
= (Long) value;
        
return new Date(longValue.longValue());
    }
    
        
try {
            
return ExcelUtils.SIMPLE_DATE_FORMATER.parse(value.toString());
        } 
catch (Exception e) {
            
throw new ConversionException(e);
        }
    }
}

      这个主要完成由String或者Long向Date型拷贝时如何转换,这样我们在转换之前只要在ConvertUtils中注册这个Converter就可以了,比如下面A和B类:

public class A {
    
private String start;
    
private Date end;
    
public Date getEnd() {
        
return end;
    }
    
public void setEnd(Date end) {
        
this.end = end;
    }
    
public String getStart() {
        
return start;
    }
    
public void setStart(String start) {
        
this.start = start;
    }
    
public String toString() {
    
return "start = " + this.start + ", end = " + end;
    }
}
public class B {
    
private Date start;
    
private String end;
    
public String getEnd() {
        
return end;
    }
    
public void setEnd(String end) {
        
this.end = end;
    }
    
public Date getStart() {
        
return start;
    }
    
public void setStart(Date start) {
        
this.start = start;
    }
    
    
public String toString() {
    
return "start = " + this.start + ", end = " + end;
    }
}

     转换测试程序如下:

import java.util.Date;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;

public class MyTest {

    
public static void main(String[] args) throws Exception {
    ConvertUtils.register(
new DateConverter(), Date.class);
    
//替换原来的StringConverter
    ConvertUtils.register(new MyStringConverter(), String.class);
    A a 
= new A();
    a.setEnd(
new Date());
    a.setStart(
"2007-05-06");
    B b 
= new B();
    BeanUtils.copyProperties(b, a);
    System.out.println(b);
    }
}

这样子,输出结果为:

start = Sun May 06 00:00:00 CST 2007, end = 2007-11-28

转自:http://blog.csdn.net/myyate/article/details/1905411

展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值