beanUtils操纵bean属性:

需要jar包commons-beanutils-x.x.x.jar
    同时commons-beanutils-x.x.x.jar需要commons-logging.jar日志记录器来支持
    所以用beanUtils的时候需要导入两个jar包
例:

javaBean:

  1. import java.util.Date;
  2.  
  3. /**
  4. *
  5. * @功能:javaBean
  6. *
  7. * @日期:2013-10-24
  8. *
  9. */
  10. public class Person {
  11.  
  12. private String name;
  13. private int age;
  14. private Date birthday;
  15.  
  16. public Date getBirthday() {
  17. return birthday;
  18. }
  19.  
  20. public void setBirthday(Date birthday) {
  21. this.birthday = birthday;
  22. }
  23.  
  24. public String getName() {
  25. return name;
  26. }
  27. public void setName(String name) {
  28. this.name = name;
  29. }
  30. public int getAge() {
  31. return age;
  32. }
  33. public void setAge(int age) {
  34. this.age = age;
  35. }
  36.  
  37. }

测试类:

  1. import java.lang.reflect.InvocationTargetException;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7.  
  8. import org.apache.commons.beanutils.BeanUtils;
  9. import org.apache.commons.beanutils.ConversionException;
  10. import org.apache.commons.beanutils.ConvertUtils;
  11. import org.apache.commons.beanutils.Converter;
  12. import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
  13. import org.junit.Test;
  14.  
  15. /**
  16. *
  17. * @功能:BeanUtils
  18. *
  19. * @日期:2013-10-24
  20. */
  21. public class BeanUtilsTest {
  22.  
  23. @Test
  24. public void test1() throws IllegalAccessException, InvocationTargetException{
  25. Person p = new Person();
  26.  
  27. String name = "张三";
  28. String age = "25";
  29. String date = "1988-01-04";
  30. /*
  31. * beanutils操纵bean的属性如下,
  32. * 第一参数传一个对象,第二个参数为所操作属性的名称,第三个参数为操作的属性的值
  33. * beanutils可以将属性类型自动转换成javaBean里的属性类型(只限于8种基本数据类型)
  34. * 想要将复杂类型的属性转换成其他型则需要注册一个转换器来实现
  35. * test2()为实现String转换为Date的测试过程
  36. */
  37. BeanUtils.setProperty(p, "name", name);
  38. BeanUtils.setProperty(p, "age", age);
  39. //如果将String类型的日期用如下方式来设置bean的属性,不会转换成功,会报出如下错误
  40. //BeanUtils.setProperty(p, "birthday", date);
  41. /*
  42. * 2013-10-24 14:48:34 org.apache.commons.beanutils.converters.DateConverter toDate
  43. *警告: DateConverter does not support default String to 'Date' conversion.
  44. *2013-10-24 14:48:34 org.apache.commons.beanutils.converters.DateConverter toDate
  45. *警告: (N.B. Re-configure Converter or use alternative implementation)
  46. */
  47. System.out.println(p.getName());
  48. System.out.println(p.getAge());
  49. // System.out.println(p.getBirthday());
  50. }
  51.  
  52. /**
  53. *
  54. * @功能:在没有相应自动转换的时候需要注册一个转换器来转换想要的类型
  55. * test2()为一个自定义的转换器,作为例子来写
  56. * 注:Apache已经写好了一些转换器,需要的时候看看文档converter下有没有想要的转换器
  57. * test3()介绍了date转换的转换器,只需要注册一下即可
  58. * @throws IllegalAccessException
  59. * @throws InvocationTargetException
  60. * @日期:2013-10-24
  61. */
  62. @Test
  63. public void test2() throws IllegalAccessException, InvocationTargetException{
  64. //注册一个String类型到Date类型的转换器
  65. //通过查看API文档,可知Converter是一个接口,需要实现其方法,第二个参数为想要转换成的数据类型
  66. ConvertUtils.register(new Converter() {
  67.  
  68. public Object convert(Class type, Object value) {
  69.  
  70. //判断是不是String类型的数据,不是则抛出异常
  71. if(!(value instanceof String)){
  72. throw new ConversionException("不是String数据类型!");
  73. }
  74. //是String的话,把Object的value强转成String
  75. String strValue = (String) value;
  76. //判断是不是一个空字符串
  77. if(strValue.trim().equals("")){
  78. return null;
  79. }
  80. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  81. try {
  82. return sdf.parse(strValue);
  83. } catch (ParseException e) {
  84. throw new RuntimeException(e);
  85. }
  86. }
  87. }, Date.class);
  88.  
  89. Person p = new Person();
  90. String date = "1988-09-23";
  91. BeanUtils.setProperty(p, "birthday", date);
  92. System.out.println(p.getBirthday());
  93. }
  94.  
  95. /**
  96. * 使用框架里已定义好的转换器
  97. * @throws InvocationTargetException
  98. * @throws IllegalAccessException
  99. *
  100. */
  101. @Test
  102. public void test3() throws IllegalAccessException, InvocationTargetException{
  103. Person p = new Person();
  104. String date = "1980-03-04";
  105. //注册一个转换器,将String类型的date转为Date型
  106. ConvertUtils.register(new DateLocaleConverter(), Date.class);
  107. BeanUtils.setProperty(p, "birthday", date);
  108. //.toLocaleString()转为需要的日期格式
  109. System.out.println(p.getBirthday().toLocaleString());
  110. }
  111. /*
  112. * 注:虽然,可以用已经写好的转换器,但是这个写好的转换器存在一个问题,就是date为空的时候,
  113. * 它检测不到,运行时会抛出异常,所以最好自己学会去写一个转换器
  114. */
  115.  
  116. /**
  117. * 用map集合中的值,填充bean的属性值
  118. * @throws Exception
  119. * @throws IllegalAccessException
  120. */
  121. @Test
  122. public void test4() throws IllegalAccessException, Exception{
  123. Person p = new Person();
  124. Map map = new HashMap();
  125. map.put("name", "张三");
  126. map.put("age", "24");
  127. map.put("birthday", "1978-09-27");
  128. //注册一个日期转换器
  129. ConvertUtils.register(new DateLocaleConverter(), Date.class);
  130. //将map集合中的值填充到bean的属性,map的key值必须要与bean的属性相同才能填充进去
  131. BeanUtils.populate(p, map);
  132. System.out.println("name:" + p.getName() + "\r\n" + "age:" + p.getAge() + "\r\n" + "birthday:" + p.getBirthday().toLocaleString().substring(0,10));
  133. }
  134. }

beanUtils操作bean的属性的更多相关文章

  1. 使用BeanUtils操作Bean属性

    package com.wzh.test.beanutils; import java.lang.reflect.InvocationTargetException; import java.text ...

  2. 内省操作javabean的属性

    import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector ...

  3. 【spring源码系列】之【Bean的属性赋值】

    每次进入源码的世界,就像完成一场奇妙的旅行! 1. 属性赋值概述 上一篇讲述了bean实例化中的创建实例过程,实例化后就需要对类中的属性进行依赖注入操作,本篇将重点分析属性赋值相关流程.其中属性赋值, ...

  4. 按bean的属性值对list集合进行排序

    List根据对象的某个属性排序工具类 List排序 import java.util.Collections; import java.util.Comparator; import java.uti ...

  5. 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式

    本系列文章导航 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 一.摘要 本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式. 其中DOM属性和元素属性的区分值得 ...

  6. jQuery入门(2)使用jQuery操作元素的属性与样式

    jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...

  7. [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. JQuery 操作对象的属性值

    通过JQuery去操作前台对象(div,span...)的属性是很常见的事情,本文就简单的介绍几种操作情形. 1):通过属性值去获取对象 2):用JQuery去修改对象的属性值 3):获取并修改对象的 ...

  9. Jquery中animate可以操作css样式属性总结

    可以用 animate() 方法来操作所有 CSS 属性吗? 是的,几乎可以!不过,需要记住一件重要的事情:当使用 animate()时, 必须使用 Camel 标记法书写所有的属性名,比如,必须使用 ...

随机推荐

  1. 关于iOS7越狱的整理

    目前越狱非常的不稳定,已经白苹果第三次了.中途遇见了不少问题,去各大论坛找了下解决办法,算是搬运工. iOS7越狱过程中打开手机上的“evasi0n7”闪退,怎么办?1. 请先尝试卸载手机“evasi ...

  2. [LeetCode][Python]Palindrome Number

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/palindr ...

  3. C++ - Vector 计算 均值(mean) 和 方差(variance)

    Vector 计算 均值(mean) 和 方差(variance) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24623187 ...

  4. uva10617 - Again Palindrome(dp)

    再次回文 输入:标准输入 输出:标准输出 时间限制: 2秒 是àpalindorme的读取相同的从左边,因为它从右侧的一个或多个字符的序列.例如,Ž,TOT和女士的 回文,但是,ADAM是不是. 给定 ...

  5. 假设说这个世界不是真实存在的,仅仅是一段代码,迄今为止你发现了哪些bug?

    给这个世界写代码的不是一个人,而是一个团队(这么大的项目,一个人开发不了).并且严重怀疑这个一个开源项目.开发人员被我们觉得是神,所以一神论是不正确的,众神论才是真理,且凡人是有机会成为神的(參悟神道 ...

  6. 解决Android中TextView首行缩进的问题

    方式一:(推荐) setText("\u3000\u3000"+xxxxx); 方式二:这种方式不同分辨率会有问题 setText(""+xxxxx); 半角: ...

  7. 学习ExtjsForVs(第一个案例HelloWord)

    第一个案例-Hello Word 1.本次练习以ext-4.0.7为例,首先从网上下载ext包. 2.打开包后将里面的三个文件或文件夹拷贝到项目中. resource文件夹 bootstrap.js ...

  8. Oracle操作数据库oracleHelper

    1 Oracle OracleHelper //============================================================================ ...

  9. FTP创建与操作

    1,FTP服务创建于配置http://jingyan.baidu.com/article/0a52e3f4230067bf63ed7268.html, 2,FTP操作类 using System; u ...

  10. WCF创建到使用到发布

    1,在VS里面新建一个类库项目 2,向类库项目里添加WCF服务文件 3.按照WCF约束规范编写接口和实现类 using System; using System.Collections.Generic ...