JiveJdon Community Forums
在线347人   Home   论坛   培训咨询   精华   查搜   注册   登陆
首页 » 论坛 » 开源项目大家谈
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 10 回复 / 1 页 [ ]  发表新帖子  回复该主题贴
dyjun55

悄悄话
发表文章: 6
注册时间: 2004年12月20日 09:17
BeanUtils.copyProperties(vo,po)的问题 2005年07月04日 11:55 本帖网址 发送到手机 回复
我在用BeanUtils.copyProperties方法从PO向VO中复制数据时,如果数据库字段为空,则PO中的property为null,导致产生java.lang.reflect.InvocationTargetException异常,请问这个问题怎么解决?谢谢
天龙工作室

悄悄话
发表文章: 29
注册时间: 2004年12月30日 14:08
Re: BeanUtils.copyProperties(vo,po)的问题 2005年07月04日 17:39 本帖网址 发送到手机 回复
要循环判断,beanutils是copy值,它的优点是不同类也可以copy
天龙工作室

悄悄话
发表文章: 29
注册时间: 2004年12月30日 14:08
Re: BeanUtils.copyProperties(vo,po)的问题 2005年07月04日 17:44 本帖网址 发送到手机 回复
还要注意一点就是:如果你使用了Hibernater3,好像这个东东就不起作用了,好像是cglib在作怪,具体是咋回来,还有待高手来解决了!!
banq

悄悄话
发表文章: 9213
注册时间: 2002年08月03日 17:08
Re: BeanUtils.copyProperties(vo,po)的问题 2005年07月04日 21:00 本帖网址 发送到手机 回复
根据属性拷贝,我以前好像碰到PO中的property为null,报错问题,后来就不让属性为空,例如List 就给它一个ArrayList实例,具体原因要研究这个类代码才能得知。
dyjun55

悄悄话
发表文章: 6
注册时间: 2004年12月20日 09:17
Re: BeanUtils.copyProperties(vo,po)的问题 2005年07月05日 09:55 本帖网址 发送到手机 回复
谢谢天龙工作室和beanq的关注,经过仔细的研究,原来的PO类中一个Date类型的属性为null时导致的异常,而其它基本数据类型的属性为null时则没有问题,
这样就好办多了,我的办法是让对应的数据库字段不能为空。

那么是不是所有的非基本类型的属性为null时,在BeanUtils.copyProperties都会出问题呢?
dyjun55

悄悄话
发表文章: 6
注册时间: 2004年12月20日 09:17
Re: BeanUtils.copyProperties(vo,po)的问题 2005年07月05日 11:04 本帖网址 发送到手机 回复
哈,不好意思,刚才突然发现原来是我写的VO类的问题,在我的VO类中有这样一段代码:
public void setBirthday(java.util.Date birthday) {
this.birthday = birthday;
this.birthdayTemp=birthday.toLocaleString();
}
忘了判断birthday为null的情况,现改为:
public void setBirthday(java.util.Date birthday) {
this.birthday = birthday;
if(birthday==null)
this.birthdayTemp="";
else
this.birthdayTemp=birthday.toLocaleString();
}
就没有异常了,并不是BeanUtils.copyProperties的问题,benq提到的List的情况我没试。
天龙工作室

悄悄话
发表文章: 29
注册时间: 2004年12月30日 14:08
Re: BeanUtils.copyProperties(vo,po)的问题 2005年07月05日 17:23 本帖网址 发送到手机 回复
呵呵,beanutils的优点在于能给不同的两个成员变量相同的,但类名不同的两个类之间相互赋值,例如:


public class a{
private b b1;
int i;
}

public class d {
private c b1;
int i;
}

public class b {
int i;
}

public class c {
int i;
}

a a1 = new a();
d d1 = new d();
BeanUtils.compyProperties(a,d); // error ????这种情况就需要遍历 实现 ,具体做法自己写
至于空值不空值,它的实现方式,我觉得还是自己看下源代码!
linux_china

悄悄话
发表文章: 28
注册时间: 2004年08月24日 16:43
Re: BeanUtils.copyProperties(vo,po)的问题 2005年07月05日 22:17 本帖网址 发送到手机 回复
BeanUtils在这方面并不出色,可以参看一下Dozer,现在我都用这个东东,它是基于BeanUtils,但在对象之间转换实在是太出色啦。 http://dozer.sourceforge.net/
dyjun55

悄悄话
发表文章: 6
注册时间: 2004年12月20日 09:17
Re: BeanUtils.copyProperties(vo,po)的问题 2005年07月06日 20:48 本帖网址 发送到手机 回复
Dozer 还是第一次见,请问linux_china,这个东西比BeanUtil好在哪里呢?
linux_china

悄悄话
发表文章: 28
注册时间: 2004年08月24日 16:43
Re: BeanUtils.copyProperties(vo,po)的问题 2005年07月07日 14:58 本帖网址 发送到手机 回复
这两个开发包的目的部一样。
BeanUtils:Bean Introspection Utilities component,主要创建一下应用的工具类来处理Java reflection 和introspection。
Dozer就是在各个JavaBean之间来回拷贝数据。
当你的系统包含什么Form,BO,PO,VO,DTO,XXO等,你会发现同步这些数据的问题,Dozer就是解决这个问题。
BeanUtils.copyProperties的功能太简单,好多地方根本无法满足需求,有了Dozer就不一样啦。
linux_china

悄悄话
发表文章: 28
注册时间: 2004年08月24日 16:43
Re: BeanUtils.copyProperties(vo,po)的问题 2005年07月07日 15:02 本帖网址 发送到手机 回复
最后想说一句,你的情况VO和PO同步信息,不要再用BeanUtils,它不适合做这件事情,如果在传到Struts的ActionForm,就更容易出问题,看看Dozer文档就一目了然。
这个主题有 10 回复 / 1 页 [ ]
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam