- 浏览: 33718 次
- 性别:
- 来自: 湖南
文章分类
最新评论
在使用BeanUtils的populate方法或者getProperty、setProperty方法时都会调用convert进行转换,但Converter只支持一些基本的类型,对于日期类型却不支持。如果源目标中包含日期类型字段,而且该字段值为空时,就会出现异常,无法赋值,解决方法如下:
1、新建一个转换器类,该类实现Converter接口,在convert方法中实现日期类型值的转换逻辑
public class DateConverter implements Converter{ public Object convert(Class type, Object value){ if(value == null){ return null; }else if(type == Timestamp.class){ return convertToDate(type, value, "yyyy-MM-dd HH:mm:ss"); }else if(type == Date.class){ return convertToDate(type, value, "yyyy-MM-dd"); }else if(type == String.class){ return convertToString(type, value); } throw new ConversionException("不能转换 " + value.getClass().getName() + " 为 " + type.getName()); } protected Object convertToDate(Class type, Object value, String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); if(value instanceof String){ try{ if(CommonUtils.isEmpty(value.toString())){ return null; } Date date = sdf.parse((String) value); if(type.equals(Timestamp.class)){ return new Timestamp(date.getTime()); } return date; }catch(Exception pe){ return null; } }else if(value instanceof Date){ return value; } throw new ConversionException("不能转换 " + value.getClass().getName() + " 为 " + type.getName()); } protected Object convertToString(Class type, Object value) { if(value instanceof Date){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (value instanceof Timestamp) { sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } try{ return sdf.format(value); }catch(Exception e){ throw new ConversionException("日期转换为字符串时出错!"); } }else{ return value.toString(); } } }
2、注册BeanUtils转换器
ConvertUtils.register(new DateConverter(), java.util.Date.class);
发表评论
-
HttpClient容易忽视的细节——连接关闭
2012-03-02 09:15 612HttpClient client = new HttpCli ... -
HTTPClient的多线程编程
2012-03-02 09:09 1475Axis2的连接主要采用了HttpClient进行与服务器的服 ... -
HttpClient超时区别
2012-03-02 09:07 1070HttpClient 4 设置超时 httpclient 超时 ... -
HttpClient Theading
2012-03-01 10:49 666有技术兴趣的 请加28830308群. 这篇文章概括了怎样在 ... -
HttpClient使用
2012-03-01 10:43 713有技术兴趣的 请加28830308群. HttpClien ... -
线程请求执行,一个多线程程执行HTTP请求的例子。
2012-03-01 10:40 1752package cn.lake.util; import ... -
httpclient 4 下载 文件
2012-03-01 10:38 938import java.io.File; import ja ... -
使用了httpclient实现的上传商品的demo
2012-03-01 10:36 1149package com.taobao.top.sample.u ... -
socket简介
2012-02-07 10:58 679第一步 充分理解Socket ... -
转载socket
2012-02-07 10:57 558对TCP/IP、UDP、Socket编程这些词你不会很陌生吧? ... -
Java的synchronized关键字:同步机制总结
2012-02-07 10:54 570不久前用到了同步,现在回过头来对JAVA中的同步做个总结,以对 ... -
JAVA RMI
2012-02-07 10:53 573Java RMI 指的是远程方法调用 (Remote Meth ... -
JXL生成复杂的EXCEL
2011-12-26 13:52 1375public String ExcelTaskRepo ... -
如何快速的为现有数据库建立数据字典?
2011-12-20 13:55 990大部分项目在验收时都需要向客户提供一份详细的数据字典,而编写数 ... -
在java中获取客户端真实的IP地址
2011-12-20 13:55 551public static String getRemoteA ... -
用JavaMail的API发送邮件
2011-12-20 13:55 5271、MimeMessage的包装类 public c ... -
在项目中整合FreeMarker框架
2011-12-16 15:40 579FreeMarker是一个用Java编写的模板引擎,既可以 ... -
Commons FTP范例
2011-12-16 15:33 501public class FtpUtil { privat ... -
Java实现的图片生成器
2011-12-16 15:32 517一、本图片生成器具有以下功能特性: 1、可以设置图 ... -
jacob学习总结
2011-12-16 15:27 438JACOB 就是 JAVA-COM Bridge的缩写,提供自 ...
相关推荐
为了避免这种情况,可以使用`NullHandler`或`DefaultHandler`来处理空值,它们会在遇到null值时返回默认值或不做任何操作。 5. **自定义转换**:如果内置的类型转换不能满足需求,可以通过实现`PropertyEditor`接口...
如果属性类型不匹配,可以实现`org.apache.commons.beanutils.Converter`接口,然后通过`registerConverter()`方法注册,使BeanUtils在遇到这种类型转换时使用自定义的转换逻辑。 总之,虽然BeanUtils在处理...
6. **异常处理**:在处理过程中遇到的异常,如无法找到setter或getter方法,BeanUtils会抛出一个`PropertyUtilsException`,方便开发者进行异常处理。 7. **自定义转换器**:用户可以通过实现`Converter`接口来自...
- 如果属性名不完全匹配或者类型转换失败,BeanUtils会抛出异常,因此需要确保对象属性名的正确性和类型的一致性。 - 为了提高性能,可以使用BeanUtils.copyProperties()的重载方法,指定只复制部分属性。 五、...
4. **空值处理(Null Handling)**:当尝试设置null值时,BeanUtils会根据具体配置决定是否抛出异常,或者如何优雅地处理这种状况。 5. **国际化支持(Internationalization Support)**:BeanUtils可以与...
4. **异常处理**:BeanUtils在执行过程中,如果遇到无法处理的情况(如找不到对应的setter或getter方法),会抛出`InvocationTargetException`。这有助于我们在程序中捕获并处理这些异常。 5. **依赖注入**:虽然...
5. **异常处理**:BeanUtils库在遇到错误时,通常会抛出`PropertyVetoException`、`IllegalAccessException`、`InvocationTargetException`等异常,这有助于开发者追踪和调试代码。 6. **国际化支持**:虽然1.8.0...
本教程将探讨如何使用Servlet实现用户注册和登录功能,以及如何解决注册时可能出现的乱码问题,并利用Apache的BeanUtils库简化Java Bean的操作。 首先,让我们深入理解Servlet的工作原理。Servlet是Java类,遵循...
4. **类型匹配:** BeanUtils在进行属性复制时,如果源属性类型与目标属性类型不一致,会尝试自动转换。但在某些情况下,这种转换可能会失败,需要预先进行类型检查。 5. **版本兼容性:** 不同版本的BeanUtils可能...
6. **异常处理**:BeanUtils在处理过程中遇到问题时,会抛出特定的异常,如`ConvertException`,这有助于调试和定位问题。 源码分析可以从以下几个方面入手: 1. **阅读源码结构**:首先了解项目的目录结构,包括...
4. **空值处理**:BeanUtils提供了对空值的处理,当尝试设置一个null值到对象的属性时,它会自动跳过,避免引发`NullPointerException`。 5. **集合操作**:BeanUtils还支持对集合类的操作,如列表和数组,可以方便...
在属性设置过程中,BeanUtils会自动进行类型转换。例如,如果属性期望的是一个整型值,而传递的是一个字符串,它会尝试将字符串转换为整型。然而,如果转换失败,它会抛出异常,因此在使用时需要注意处理这类异常。...
- 使用BeanUtils时需注意处理可能抛出的`IllegalAccessException`、`InvocationTargetException`和`NoSuchMethodException`等异常。 - 自定义类型转换器时,需确保转换过程的健壮性和兼容性。 - 在进行对象复制时...
然而,需要注意的是,BeanUtils使用反射进行操作,可能会带来安全风险,因为它不进行任何类型检查。如果属性类型不匹配,可能会抛出`InvocationTargetException`。因此,使用时应确保属性类型的一致性,并对可能出现...
在上述代码中,BeanUtils会自动将Map中的"name"和"age"键对应的值分别设置到myBean对象的name和age属性上。需要注意的是,`populate()`方法依赖于属性名的精确匹配,因此Map的键应与JavaBean的属性名保持一致,大小...
3. **空值处理**:在处理Java Bean时,BeanUtils会自动处理null值,避免因为空值引发的异常。例如,在复制属性时,如果源对象的某个属性为空,BeanUtils会忽略该属性,不会影响目标对象的其他属性。 4. **反射支持*...
6. **异常处理**:BeanUtils在遇到错误时,如属性不存在或类型转换失败,会抛出适当的异常,便于开发者调试和处理。 7. **依赖注入**:虽然不如Spring等框架那样强大,但BeanUtils也提供了一种简单的方式来进行依赖...
例如,当源对象和目标对象的属性类型不完全匹配时,BeanUtils会尝试使用ConversionService进行类型转换。 在使用BeanUtils时,需要注意一些潜在的问题。首先,由于BeanUtils是通过反射机制来操作对象的属性,所以...
- **类型转换**:BeanUtils具备自动类型转换的能力,当设置的属性值类型与属性期望类型不匹配时,会尝试进行类型转换。 - **对象拷贝**:`copyProperties()`方法用于将一个对象的所有属性值复制到另一个对象,极大...
在进行属性复制时,如果源对象的某个属性值为空,BeanUtils会自动跳过,避免因为空值引发异常。同时,它还提供了自定义转换器的功能,通过实现Converter接口,可以自定义类型转换规则,处理不同类型间的转换问题。 ...