让BeanUtils的copyProperty方法支持String与java.util.Date的类型转换

刚开始使用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包

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值