BeanUtils的populate方法之日期处理

来源:互联网 发布:qq刷圈圈软件 编辑:程序博客网 时间:2024/05/13 02:57

BeanUtils.populate(Obj, Map);可以使map转对象,但是如果是Obj有个日期字段而Map中这个字段为空时候就会报错,无法赋值,这个时候就需要一个日期转换器!

首先写一个日期转换器

//日期转换器public class DateTimeConverter implements Converter{ private static final String DATE      = "yyyy-MM-dd"; private static final String DATETIME  = "yyyy-MM-dd HH:mm:ss"; private static final String TIMESTAMP = "yyyy-MM-dd HH:mm:ss.SSS";@Overridepublic Object convert(Class type, Object value) {// TODO Auto-generated method stub return toDate(type, value);}public static Object toDate(Class type, Object value) {        if (value == null || "".equals(value))            return null;        if (value instanceof String) {            String dateValue = value.toString().trim();            int length = dateValue.length();            if (type.equals(java.util.Date.class)) {                try {                    DateFormat formatter = null;                    if (length <= 10) {                        formatter = new SimpleDateFormat(DATE, new DateFormatSymbols(Locale.CHINA));                        return formatter.parse(dateValue);                    }                    if (length <= 19) {                        formatter = new SimpleDateFormat(DATETIME, new DateFormatSymbols(Locale.CHINA));                        return formatter.parse(dateValue);                    }                    if (length <= 23) {                        formatter = new SimpleDateFormat(TIMESTAMP, new DateFormatSymbols(Locale.CHINA));                        return formatter.parse(dateValue);                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        }        return value;    }}
然后再写一个通用的调用方法

public static void transMap2Bean(Map<String, Object> map, Object obj) {            try {          DateTimeConverter dtConverter = new DateTimeConverter();        ConvertUtilsBean convertUtilsBean = new ConvertUtilsBean();        convertUtilsBean.deregister(Date.class);        convertUtilsBean.register(dtConverter, Date.class);        BeanUtilsBean beanUtilsBean = new BeanUtilsBean(convertUtilsBean,        new PropertyUtilsBean());        beanUtilsBean.populate(obj, map);          } catch (Exception e) {                     }            return;        }  


0 0