改进BeanUtils支持DATE类型
2013-09-02 11:49
549 查看
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
/**
*
* @author lucas
*/
public class BeanUtilsEx extends BeanUtils {
static {
ConvertUtils.register(new DateConvert(), java.util.Date.class);
ConvertUtils.register(new DateConvert(), java.sql.Date.class);
}
public static void copyProperties(Object dest, Object orig) {
try {
BeanUtils.copyProperties(dest, orig);
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InvocationTargetException ex) {
ex.printStackTrace();
}
}
}
项目中经常要用到BeanUtils, 可惜的是BeanUtils只支持基本数据类型转换, 最麻烦的是连比较常用的DATE类型都不支持, 无奈之下只好改装..
实际上只需要扩展Converter, 增加一个Converter接口的实例DateConvert, 在内部写好转换方法并注册就OK.. 上代码
然后再写一个BeanUtilsEx继承BeanUtils, 并在里面注册DateConvert
BeanUtilsEx.copyProperties(dest, orig)即可...
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
/**
*
* @author lucas
*/
public class BeanUtilsEx extends BeanUtils {
static {
ConvertUtils.register(new DateConvert(), java.util.Date.class);
ConvertUtils.register(new DateConvert(), java.sql.Date.class);
}
public static void copyProperties(Object dest, Object orig) {
try {
BeanUtils.copyProperties(dest, orig);
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InvocationTargetException ex) {
ex.printStackTrace();
}
}
}
项目中经常要用到BeanUtils, 可惜的是BeanUtils只支持基本数据类型转换, 最麻烦的是连比较常用的DATE类型都不支持, 无奈之下只好改装..
实际上只需要扩展Converter, 增加一个Converter接口的实例DateConvert, 在内部写好转换方法并注册就OK.. 上代码
然后再写一个BeanUtilsEx继承BeanUtils, 并在里面注册DateConvert
import java.text.ParseException; import java.text.SimpleDateFormat; import org.apache.commons.beanutils.Converter; /** * * @author lucas */ public class DateConvert implements Converter { public Object convert(Class arg0, Object arg1) { String p = (String)arg1; if(p== null || p.trim().length()==0){ return null; } try{ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return df.parse(p.trim()); } catch(Exception e){ try { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); return df.parse(p.trim()); } catch (ParseException ex) { return null; } } } }
BeanUtilsEx.copyProperties(dest, orig)即可...
相关文章推荐
- 让BeanUtils的copyProperty方法支持String与java.util.Date的类型转换
- BeanUtils.copyProperties支持Date类型
- 在struts1.x中设置对java.util.Date类型支持
- beanutils工具类将字符串转换成Date(java.util.Date)数据类型的方法
- asp.net提示使用的 SQL Server 版本不支持数据类型“date”的解决办法:
- 使用的 SQL Server 版本不支持数据类型“date”的解决方法 (转)
- 用BeanUtilsDate类型值为空报错的解决方法
- 发布首款支持Shift/Ctrl多选的国产日历控件,界面仿Twitter风格,支持中文日期类型,支持SImpleDateFormat格式,支持change等自定义事件,全中文注释和API,欢迎支持
- 使用的 SQL Server 版本不支持数据类型“date”的解决方法
- 让jackson支持jdk8的日期类型LocalDate
- HTML5:判断浏览器是否支持date类型
- BeanUtils对Date和Decimal类型的转换器
- mysql所支持的日期时间类型有:DATETIME、 TIMESTAMP、DATE、TIME、YEAR。
- 使用BeanUtils时,Date类型值为空的解决方法
- 使用Java反射机制将Map转换为Java对象,支持Boolean、Date类型
- 使用的 SQL Server 版本不支持数据类型“date”的解决方法
- dhl:报错:LINQ to Entities 不支持指定的类型成员“Date”
- 发布首款支持Shift/Ctrl多选的国产日历控件,界面仿Twitter风格,支持中文日期类型,支持SImpleDateFormat格式,支持change等自定义事件,全中文注释和API,欢迎支持
- 解决BeanUtils传入date数据类型参数的异常问题
- 使用的 SQL Server 版本不支持数据类型“date”的解决方法 [转]