使用BeanUtils时Date类型值为空的解决方法_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用beanutils时,date类型值为空的解决方法mons.beanuti.conversionexception: no value specifi for date 现在系统里原先不出错的地方老是浮现以上这个错误,不知道什么缘由。也都是beanutils.copyproperties(teainfo, infofo);这种语句出的错。 今日查了一上午,找到了它的使用,本来它是一种反射机制,用法copyproperties可以复制bean,不必重复写无数属性,只是效率不高。 1, beanutils.copyproperties(dest, orig); 这种copy是浅拷贝,复制后的2

2、个bean的同一个属性可能拥有同一个对象的ref,这个在用法时要当心,特殊是对于属性为自定义类的状况.还要属性为集合类的状况。当心hibernate的set 2,beanutils.copyproperties与propertyutils.copyproperties的区分 这两个类几乎有一摸一样的功能,唯一的区分是:beanutils在对bean赋值是会举行类型转化。举例来说也就是在copyproperty时只要属性名相同,就算类型不同,beanutils也可以举行copy;而propertybean则可能会报错。固然2个bean之间的同名属性的类型必需是可以转化的,否则用beanutils

3、一样会报错。 若实现了mons.beanutils.converter接口则可以自定义类型之间的转化。 除beanutils外还有一个名为propertyutils的工具类,它也提供copyproperties()办法,作用与beanutils的同名办法非常相像,主要的区分在于后者提供类型转换功能,即发觉两个javabean的同名属性为不同类型时,在支持的数据类型范围内举行转换,而前者不支持这个功能,但是速度会更快一些 http:/xiaozhao- 注重:有人说beanutils支持的转换类型不包括java.util.date? 我用1.6.1版本试了beanutils.copyproper

4、ties,绝对是支持java.util.date的。 3,lazydynabean可以实现动态的vo。 这样,有时候程序给view层的东西就可以用它来封装而不用特地建一个多余的vo类了。 beanutils.copyproperties与propertyutils.copyproperties使用及区分 一、简介: beanutils提供对java反射和自省api的包装。其主要目的是利用反射机制对javabean的属性举行处理。我们知道,一个javabean通常包含了大量的属性,无数状况下,对javabean的处理导致大量get/代码积累,增强了代码长度和阅读代码的难度。 二、使用: bean

5、utils是这个包里比较常用的一个工具类,这里只介绍它的copyproperties()办法。该办法定义如下: public ic vo copyproperties(java.lang.object dest,java.lang.object orig) throws java.lang.illegalaccessexception, java.lang.reflect.invoiontargetexception 假如你有两个具有无数相同属性的javabean,一个很频繁的状况就是suts里的po对象(持久对象)和对应的actionform,例如 teacher和teacherform。我

6、们普通会在action里从actionform构造一个po对象,传统的方式是用法类似下面的语句对属性逐个赋值: /得到teacherform teacherform teacherform=(teacherform)form; /构造teacher对象 teacher teacher=new teacher(); teacher.setname(teacherform.getname(); teacher.setage(teacherform.getage(); teacher.setgender(teacherform.getgender(); teacher.setmajor(teache

7、rform.getmajor(); teacher.setdepartment(teacherform.getdepartment(); /持久化teacher对象到数据库 hibernatedao.save(teacher); 而用法beanutils后,代码就大大改观了,如下所示: /得到teacherform teacherform teacherform=(teacherform)form; /构造teacher对象 teacher teacher=new teacher(); beanutils.copyproperties(teacher,teacherform); /持久化tea

8、cher对象到数据库 hibernatedao.save(teacher); 假如teacher和teacherform间存在名称不相同的属性,则beanutils不对这些属性举行处理,需要程序员手动处理。例如 teacher包含modifydate(该属性记录最后修改日期,不需要用户在界面中输入)属性而teacherform无此属性,那么在上面代码的 copyproperties()后还要加上一句: teacher.setmodifydate(new date(); 怎么样,很便利吧!除beanutils外还有一个名为propertyutils的工具类,它也提供copyproperties(

9、)办法,作用与 beanutils的同名办法非常相像,主要的区分在于后者提供类型转换功能,即发觉两个javabean的同名属性为不同类型时,在支持的数据类型范围内举行转换,而前者不支持这个功能,但是速度会更快一些。beanutils支持的转换类型如下: * java.lang.bigdecimal * java.lang.biginteger * boolean and java.lang.boolean * byte and java.lang.byte * char and java.lang.character * java.lang.class * double and java.la

10、ng.double * float and java.lang.float * int and java.lang.integer * long and java.lang.long * short and java.lang.short * java.lang.string * java.sql.date * java.sql.time * java.sql.timestamp 这里要注重一点,java.util.date是不被支持的,而它的子类java.sql.date是被支持的。因此假如对象包含时光类型的属性,且希翼被转换的时候,一定要用法java.sql.date类型。否则在转换时会提

11、醒argument mistype异样。 三、优缺点: apache jakarta commons项目十分实用。我曾在许多不同的项目上或挺直或间接地用法各种流行的commons组件。其中的一个强大的组件就是beanutils。我 将解释如何用法beanutils将local实体bean转换为对应的value 对象: beanutils.copyproperties(avalue, alocal) 上面的代码从alocal对象复制属性到avalue对象。它相当容易!它不管local(或对应的value)对象有多少个属性,只管举行复制。我们假设 local对象有100个属性。上面的代码使我们可以无需键入起码100行的冗长、简单出错和反复的get和set办法调用。这太棒了!太强大了!太实用 了! 现在,还有一个坏消息:用法beanutils的成本惊人地昂贵!我做了一个容易的测试,beanutils所花费的时光要超过取数 据、将其复制到对应的 value对象(通过手动调用get和set办法),以及通过串行化将其返回到远程的客户机的时光总和。所以要当心用法这种威

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论