`

BeanUtils使用总结(三)

阅读更多

1、beanCompartor

动态排序 还是通过反射,动态设定Bean按照哪个属性来排序,而不再需要在bean的Compare接口进行复杂的条件判断。
List peoples = ...; // Person对象的列表
Collections.sort(peoples, new BeanComparator("age"));

 

//如果要支持多个属性的复合排序,如"Order By lastName,firstName"
ArrayList sortFields = new ArrayList();
sortFields.add(new BeanComparator("lastName"));
sortFields.add(new BeanComparator("firstName"));
ComparatorChain multiSort = new ComparatorChain(sortFields);
Collections.sort(rows,multiSort);
其中ComparatorChain属于jakata commons-collections包。

 

//如果age属性不是普通类型,构造函数需要再传入一个comparator对象为age变量排序。
另外, BeanCompartor本身的ComparebleComparator, 遇到属性为null就会抛出异常, 也不能设定升序还是降序。
这个时候又要借助commons-collections包的ComparatorUtils.
   Comparator mycmp = ComparableComparator.getInstance();
   mycmp = ComparatorUtils.nullLowComparator(mycmp);  //允许null
   mycmp = ComparatorUtils.reversedComparator(mycmp); //逆序
   Comparator cmp = new BeanComparator(sortColumn, mycmp);

 


2、Converter

   把Request或ResultSet中的字符串绑定到对象的属性
   经常要从request,resultSet等对象取出值来赋入bean中,下面的代码谁都写腻了,
   如果不用MVC框架的绑定功能的话。 
   String a = request.getParameter("a");
   bean.setA(a);
   String b = ....不妨写一个Binder:
     MyBean bean = ...;
    HashMap map = new HashMap();
    Enumeration names = request.getParameterNames();
    while (names.hasMoreElements())
    {
      String name = (String) names.nextElement();
      map.put(name, request.getParameterValues(name));
    }
    BeanUtils.populate(bean, map);

 

    populate 功能:用于将一个map的值填充到一个bean中,其函数原型如下:
        public void populate(java.lang.Object bean,
   java.util.Map properties)
        throws java.lang.IllegalAccessException,
        java.lang.reflect.InvocationTargetException
  在struts中这个函数被用于从http request中取得参数添加到FormBean

 

    其中BeanUtils的populate方法或者getProperty,setProperty方法其实都会调用convert进行转换。
    但Converter只支持一些基本的类型,甚至连java.util.Date类型也不支持。而且它比较笨的一个地方是当遇到不认识的类型时,居然会抛出异常来。
    对于Date类型,我参考它的sqldate类型实现了一个Converter,而且添加了一个设置日期格式的函数。
要把这个Converter注册,需要如下语句:
    ConvertUtilsBean convertUtils = new ConvertUtilsBean(); 
    DateConverter dateConverter = new DateConverter(); 
    convertUtils.register(dateConverter,Date.class);    
    //因为要注册converter,所以不能再使用BeanUtils的静态方法了,必须创建BeanUtilsBean实例  
    BeanUtilsBean beanUtils = new BeanUtilsBean(convertUtils,new PropertyUtilsBean());  
    beanUtils.setProperty(bean, name, value);

 

分享到:
评论

相关推荐

    BeanUtils工具包

    三、BeanUtils的使用示例 在处理表单数据时,假设我们有一个User实体类,包含name和email属性,我们可以这样做: ```java public class User { private String name; private String email; // getters and ...

    commons-beanutils-1.8.0.jar

    三、BeanUtils的使用 1. 读取属性值: ```java import org.apache.commons.beanutils.BeanUtils; public class Test { public static void main(String[] args) { MyBean myBean = new MyBean(); // 设置属性...

    Beanutils基本用法.doc

    #### 三、BeanComparator动态排序 BeanComparator是Beanutils提供的一个用于比较JavaBean中特定属性值的工具类,它可以方便地实现对Bean列表的排序。 ##### 单属性排序 ```java List<Person> peoples = ...; // ...

    BeanUtils教程

    #### 三、BeanUtils核心功能详解 `BeanUtils` 提供了许多实用的方法来帮助开发者处理 Java Bean,其中最为常用的功能之一就是 `describe` 方法。该方法可以返回一个对象的所有可读属性,并将属性名及其对应的属性值...

    commons-beanutils

    总结,Apache Commons BeanUtils是Java开发中的得力助手,它简化了JavaBeans的处理,提高了开发效率。理解和掌握其核心功能和源码,将有助于我们更好地利用这一工具,提升项目开发的便捷性和可维护性。

    commons-beanutils-1.8.0.rar源文件及jar包

    总结,Apache Commons BeanUtils是Java开发中一个非常实用的工具库,它的1.8.0版本提供了稳定且强大的Bean操作功能。通过深入理解和使用这个库,开发者可以提高代码的可读性和维护性,同时减少重复的工作量。

    commons-beanutils-core-1.7.0.zip

    在本篇文章中,我们将深入探讨Apache Commons BeanUtils Core 1.7.0版本,了解其核心功能、应用场景以及如何使用。 一、Apache Commons BeanUtils Core概述 Apache Commons BeanUtils Core是一个用于简化JavaBeans...

    commons-beanutils-core-1.8.0.jar

    总结,Apache Commons BeanUtils Core 1.8.0是一个强大的JavaBean操作工具,它简化了JavaBean的属性访问和数据转换,为开发者提供了高效、便捷的编程体验。理解并熟练掌握其用法,将有助于提高Java应用程序的开发...

    JSP 开发之Spring BeanUtils组件使用

    总结来说,Spring BeanUtils组件是处理JavaBean属性复制的一个强大工具,在很多场景下可以简化代码,提高开发效率。通过理解和掌握该组件的使用方法和特性,开发者可以更便捷地在Spring项目中操作JavaBean。

    BeanUtils.jar

    三、使用示例 假设我们有以下两个类: ```java public class User { private String name; private int age; // getters and setters... } public class Profile { private String userName; private int ...

    beanutils的jar包.zip

    总结起来,Apache Commons BeanUtils是Java Web开发中的一种强大工具,它简化了JavaBean操作,提高了开发效率。正确地将BeanUtils的jar包引入Servlet应用,能够帮助我们更便捷地处理请求数据,实现业务逻辑的高效...

    JavaWeb BeanUtils信息类原理详解

    三、总结 在本文中,我们介绍了 BeanUtils 信息类的原理和使用方法。BeanUtils 是一个非常有用的工具类,它提供了一种简洁的方式来操作 JavaBean 对象。通过使用 BeanUtils,我们可以简化我们的代码,提高开发效率...

    eXtremeComponentsEC使用总结

    ### eXtremeComponents EC 使用总结 #### 一、概述 eXtremeComponents(简称EC)是一款开源的JavaServer Pages (JSP) 自定义标签库,主要用于在JSP页面中展示复杂的数据表格。该标签库的核心组件是eXtremeTable,...

    JMockData使用手册

    为了兼容原有代码中的方法调用,可以使用`BeanUtils.copyProperties()`方法将新生成的对象属性复制到原有的业务Bean中: ```java TestBean testBean = JMockData.mock(TestBean.class); MyBusinessBean business...

    java项目开发总结.docx

    * BeanUtils 和 PropertyUtils 等 Apache Commons 库 七、输入输出流 * InputStream、OutputStream、Reader 和 Writer 等流类 * Adapter 设计模式和原始流类 * Decorator 设计模式和包装流类 * 对象序列化和反序列...

    Java Web程序设计入门课件-初识JavaBean.pptx

    例如,可以使用`BeanUtils.copyProperties()`方法将一个JavaBean的属性复制到另一个JavaBean,或者使用`BeanUtils.getProperty()`和`BeanUtils.setProperty()`来获取和设置属性值。 总结起来,JavaBean是Java Web...

    JasperReport报表设计总结

    #### 三、JasperReport的集成与部署 在Web应用程序中集成JasperReport通常需要将相关库文件(如JasperReport库、iText库等)添加到项目的`WEB-INF/lib`目录下。例如,对于JasperReport 1.3.3版本,可能需要以下库...

    常用的jar包,mybatis、json、后端等

    总结来说,这个jar包集合涵盖了从JSON处理、数据库操作、文件上传到移动设备适配和第三方服务集成等多个方面,是Java后端开发中不可或缺的一部分。这些库的选择和版本选择都需要根据项目的具体需求和技术栈来确定,...

Global site tag (gtag.js) - Google Analytics