让BeanUtils的copyProperty方法支持String与java.util.Date的类型转换
来源:互联网 发布:用友软件的售后 编辑:程序博客网 时间:2024/06/02 10:36
刚开始使用BeanUtils的copyProperties的bean属性复制方法
结果发现它复制属性的时候,只支持java.sql.Date与String的类型转换,但是由于我们的pojo是使用java.util.Date的类型地,而由于form中的同名属性由于可以为空,所以不能使用Date类型,否则会报错,于是我们在form中的Date一致采用了String的类型,现在在使用BeanUtils的copyProperties的方法时就不行了,会报错。。。
在一番权衡下,最后决定修改apache的BeanUtils包的源代码。
花了大概半小时看了一下BeanUtils的copyProperties方法的实现发现原来BeanUtils其实只是一个工厂,真正实现复制的是BeanUtilsBean类,跟踪进去后看了看,其实这里调用的是它本身的copyProperty方法迭代复制属性实现的。
实现方法大致是这样:首先它是获得目标Bean的属性类型,然后在一个置入了多个class为key,对应转换类为值的map中,该map名为converters,在其中寻找与之class类匹配的转换类,然后通过该类将源Bean的属性转换成目标Bean的类属性,之后set入即可。
根据他的源代码,对该包做了一小部分的修改,首先是在converters中加入了一个java.util.Date的类,然后在converters包中加入了一个名为UtilDateConverter的类,用于对Date的转换。然后又修改了其中的StringConverter类,使其支持了对Date转换成日期格式的字符串,分别支持精确到日以及精确到秒的两种长度。
以下是我的资源地址:http://download.csdn.net/user/fableking/
有需要的朋友可以去下载我修改源码后重新打的包,名为commons-beanutils-jesse.zip其中包括了一个简单的demo。这个包可以直接用来替换commons-beanutils.jar包
- 让BeanUtils的copyProperty方法支持String与java.util.Date的类型转换
- java.util.Date的set方法问题(struts2类型转换)
- java.util.Date和java.sql.Date之间的类型转换,以及String和Date的转换
- java.sql.Date java.util.Date String 之间的转换
- java.sql.Date java.util.Date String 的相互转换
- JAVA java.sql.Date、java.util.Date与数据库中的Date字段的转换方法
- string与java.util.Date、java.sql.Date间的转换
- java.sql.Date数据库日期类型计算及与java.util.Date的转换
- atitit.java给属性赋值方法总结and BeanUtils 1.6.1 .copyProperty的bug
- 文章标题java获取时间的方法及Date与String类型的转换
- java String与Date类型之间的相互转换
- java中String与Date的类型转换
- java.sql.Date,java.util.Date的区别与转换
- java.util.Date与java.sql.Date的相互转换
- java.sql.date 与 java.util.date的转换
- java.util.date 与 java.sql.date的转换
- java.util.Date与java.sql.Date的转换
- java.sql.Date 与 java.util.Date 的转换
- 数字电视的几个易混淆概念
- 社区赢利的八个法则只看楼主
- VC中用简易方法实现淡入淡出的启动画面
- 用CSS设计纵向导航菜单(div+h1+h2)
- 什么是网盾,什么是网盾工程?
- 让BeanUtils的copyProperty方法支持String与java.util.Date的类型转换
- 学电脑IT我建议大家学网盾?
- C语言中的回调函数(函数指针)
- #pragma预处理指令 详细介绍
- VC实现线程池
- C++关键字(static/register/atuo/extern/volatile/const)释疑
- 用Access當資料來源時,不能更新資料的原因
- C# 利用反射动态创建对象[摘录]
- CString ,string, char 的操作