`
hilor
  • 浏览: 27524 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

改进BeanUtils支持DATE类型

    博客分类:
  • J2EE
阅读更多

项目中经常要用到BeanUtils, 可惜的是BeanUtils只支持基本数据类型转换, 最麻烦的是连比较常用的DATE类型都不支持, 无奈之下只好改装..

实际上只需要扩展Converter, 增加一个Converter接口的实例DateConvert, 在内部写好转换方法并注册就OK.. 上代码

 

import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.apache.commons.beanutils.Converter;

/**
 *
 * @author lucas
 */
public class DateConvert implements Converter {

    public Object convert(Class arg0, Object arg1) {
        String p = (String)arg1;
        if(p== null || p.trim().length()==0){
            return null;
        }   
        try{
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return df.parse(p.trim());
        }
        catch(Exception e){
            try {
                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
                return df.parse(p.trim());
            } catch (ParseException ex) {
                return null;
            }
        }
        
    }

}
 然后再写一个BeanUtilsEx继承BeanUtils, 并在里面注册DateConvert

import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;

/**
 *
 * @author lucas
 */
public class BeanUtilsEx extends BeanUtils {
    static {
        ConvertUtils.register(new DateConvert(), java.util.Date.class);
        ConvertUtils.register(new DateConvert(), java.sql.Date.class);
    }

    public static void copyProperties(Object dest, Object orig) {
        try {
            BeanUtils.copyProperties(dest, orig);
        } catch (IllegalAccessException ex) {
            ex.printStackTrace();
        } catch (InvocationTargetException ex) {
            ex.printStackTrace();
        }
    }
}
 
BeanUtilsEx.copyProperties(dest, orig)即可... 

分享到:
评论
2 楼 amuro_lei 2012-03-27  
可以试试用PropertyUtils.copyProperties代替?
1 楼 heyaron 2010-08-07  
        String p = (String)arg1; 
报错,谢谢。如果是date不能强制转换

相关推荐

    beanutils包

    5. **集合操作**:BeanUtils还支持对集合类的操作,如列表和数组,可以方便地将集合中的元素映射到JavaBeans对象的属性上。 在网络框架中,BeanUtils的作用尤为重要: - **模型绑定**:在网络框架中,通常需要将...

    commons-beanutils-1.8.3和commons-beanutils-1.8.0

    在`commons-beanutils-1.8.0`和`commons-beanutils-1.8.3`这两个版本中,可能包含的更新和改进包括: - **错误修复**:新版本通常会修复旧版本中存在的bug,提高库的稳定性和可靠性。 - **性能优化**:可能会对某些...

    BeanUtils jar包+源码

    6. **国际化支持**:BeanUtils还支持国际化(i18n),通过`ResourceBundle`和`MessageResources`类,可以在不同语言环境下进行属性值的转换和显示。 7. **线程安全性**:由于BeanUtils的一些方法不是线程安全的,...

    commons-beanutils 源码

    - **类型转换**:BeanUtils具备自动类型转换的能力,当设置的属性值类型与属性期望类型不匹配时,会尝试进行类型转换。 - **对象拷贝**:`copyProperties()`方法用于将一个对象的所有属性值复制到另一个对象,极大...

    commons-beanutils-1.8.2-src官方源文件,是你学习beanutils工具的必备资料

    - **类型转换**:BeanUtils具备自动类型转换能力,当设置属性值时,如果类型不匹配,它会尝试进行转换。例如,字符串转换为整型、浮点型等。 - **动态Bean访问**:对于那些没有getter和setter方法但有公共字段的类...

    Commons BeanUtils 1.8.3 API

    5. **国际化支持**:BeanUtils也与Apache Commons Locale和ResourceBundle结合,支持多语言环境下的Bean属性设置。 6. **异常处理**:在处理过程中遇到的异常,如无法找到setter或getter方法,BeanUtils会抛出一个`...

    beanutils JAR包下载

    5. **国际化支持(Internationalization Support)**:BeanUtils可以与ResourceBundle结合使用,实现基于不同地区的属性值处理。 在实际开发中,BeanUtils常用于以下场景: - 数据绑定:在Web应用中,BeanUtils...

    beanutils的jar包

    此外,BeanUtils库还支持属性的动态设置和获取。`PropertyUtils.getProperty()`和`PropertyUtils.setProperty()`方法允许你通过字符串形式的属性名来操作对象的属性,这样就不需要事先知道属性的确切名称。这在处理...

    beanutils-1.9.3jar包

    在使用1.9.3版本的BeanUtils时,开发者需要注意这个版本可能已经解决了之前版本的一些已知问题,同时也可能引入了一些新的特性和改进。在升级或引入新版本时,建议查阅官方的发行说明或变更日志,以了解具体的变化。...

    commons-beanutils-1.8.0

    这个版本的BeanUtils库包含了对JavaBeans的全面支持,包括属性的获取、设置、复制以及类型转换等功能。通过使用BeanUtils,开发者可以避免编写大量重复的getter和setter方法,从而提高开发效率。 在`commons-...

    org.apache.commons.beanutils.jar

    6. **国际化支持**:通过与Apache Commons Locale配合,BeanUtils支持国际化和本地化,可以方便地处理不同地区的语言和格式设置。 `commons-license.txt`文件通常包含了Apache Commons BeanUtils的许可协议,它是...

    BeanUtils-jar包

    BeanUtils-jar包还支持处理复杂的JavaBean属性,如集合、数组和嵌套属性。例如,如果JavaBean的属性是一个List,可以通过索引来获取或设置List中的元素。对于嵌套属性,如`person.address.city`,BeanUtils也能优雅...

    Beanutils基本用法.doc

    `Converter`默认支持一些基础的数据类型,但不包括`java.util.Date`。对于不支持的类型,Beanutils会抛出异常。为了解决这个问题,可以使用自定义的转换器或者利用`ConvertUtils`注册自定义转换逻辑。 #### 五、...

    commons-beanutils-1.9.4

    - **集合操作**:BeanUtils也支持对集合类型的属性进行操作,如列表、数组等。 2. **使用场景**: - **数据绑定**:在Web开发中,BeanUtils常用于将HTTP请求参数绑定到JavaBean对象,简化表单数据处理。 - **...

    commons-beanutils-jesse.zip(20080825更新)

    apache的BeanUtils的copyProperty以及copyProperties方法不支持String与java.util.Date的类型相互转换; 该包对源码进行了部分修改,使其支持对String与Date之间的类型转换。 2008-07-17更新: 增加了BeanUtils的copy...

    commons-beanutils所有版本(1.0-1.9.2).zip

    3. **类型转换**: BeanUtils库还包含一个强大的类型转换机制,允许在不同数据类型之间自动转换,如`ConvertUtils.convert()`方法。这使得在处理用户输入或者不同数据源时,能够灵活地处理各种数据类型。 4. **复制...

    BeanUtils包

    6. **国际化支持:** 虽然不是直接的功能,但BeanUtils与ResourceBundle结合使用,可以实现根据不同的语言环境设置Bean的属性值,适应多语言应用。 7. **自定义转换器:** 用户可以通过实现`org.apache.commons....

    beanUtils包与源码

    此外,BeanUtils还支持自定义转换器(Converter),这在处理不同类型之间的转换时非常有用。通过注册自定义的转换器,我们可以控制特定属性值的转换逻辑,比如日期字符串到Date对象的转换。 总的来说,BeanUtils是...

    beanutils-1.8.3开发包

    4. **国际化支持**:通过`Locale`对象,BeanUtils可以处理不同地区的数据格式,这对于多语言应用来说是必不可少的。 5. **自定义转换**:开发者可以通过实现`Converter`接口,为特定类型提供自定义的数据转换逻辑。...

    Web中Date类型解决方法

    这个方法内部又调用了`BeanUtils.populate`来进行属性的填充,但是默认情况下,`ActionServlet`并没有注册`Date`类型的转换器,因此会导致类型转换失败。 **解决方法**: 1. **实现自定义的ActionServlet并注册...

Global site tag (gtag.js) - Google Analytics