项目中经常要用到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)即可...
分享到:
相关推荐
这个方法内部又调用了`BeanUtils.populate`来进行属性的填充,但是默认情况下,`ActionServlet`并没有注册`Date`类型的转换器,因此会导致类型转换失败。 **解决方法**: 1. **实现自定义的ActionServlet并注册...
5. **集合操作**:BeanUtils还支持对集合类的操作,如列表和数组,可以方便地将集合中的元素映射到JavaBeans对象的属性上。 在网络框架中,BeanUtils的作用尤为重要: - **模型绑定**:在网络框架中,通常需要将...
在`commons-beanutils-1.8.0`和`commons-beanutils-1.8.3`这两个版本中,可能包含的更新和改进包括: - **错误修复**:新版本通常会修复旧版本中存在的bug,提高库的稳定性和可靠性。 - **性能优化**:可能会对某些...
6. **国际化支持**:BeanUtils还支持国际化(i18n),通过`ResourceBundle`和`MessageResources`类,可以在不同语言环境下进行属性值的转换和显示。 7. **线程安全性**:由于BeanUtils的一些方法不是线程安全的,...
- **类型转换**:BeanUtils具备自动类型转换的能力,当设置的属性值类型与属性期望类型不匹配时,会尝试进行类型转换。 - **对象拷贝**:`copyProperties()`方法用于将一个对象的所有属性值复制到另一个对象,极大...
- **类型转换**:BeanUtils具备自动类型转换能力,当设置属性值时,如果类型不匹配,它会尝试进行转换。例如,字符串转换为整型、浮点型等。 - **动态Bean访问**:对于那些没有getter和setter方法但有公共字段的类...
5. **国际化支持**:BeanUtils也与Apache Commons Locale和ResourceBundle结合,支持多语言环境下的Bean属性设置。 6. **异常处理**:在处理过程中遇到的异常,如无法找到setter或getter方法,BeanUtils会抛出一个`...
5. **国际化支持(Internationalization Support)**:BeanUtils可以与ResourceBundle结合使用,实现基于不同地区的属性值处理。 在实际开发中,BeanUtils常用于以下场景: - 数据绑定:在Web应用中,BeanUtils...
此外,BeanUtils库还支持属性的动态设置和获取。`PropertyUtils.getProperty()`和`PropertyUtils.setProperty()`方法允许你通过字符串形式的属性名来操作对象的属性,这样就不需要事先知道属性的确切名称。这在处理...
在使用1.9.3版本的BeanUtils时,开发者需要注意这个版本可能已经解决了之前版本的一些已知问题,同时也可能引入了一些新的特性和改进。在升级或引入新版本时,建议查阅官方的发行说明或变更日志,以了解具体的变化。...
这个版本的BeanUtils库包含了对JavaBeans的全面支持,包括属性的获取、设置、复制以及类型转换等功能。通过使用BeanUtils,开发者可以避免编写大量重复的getter和setter方法,从而提高开发效率。 在`commons-...
6. **国际化支持**:通过与Apache Commons Locale配合,BeanUtils支持国际化和本地化,可以方便地处理不同地区的语言和格式设置。 `commons-license.txt`文件通常包含了Apache Commons BeanUtils的许可协议,它是...
BeanUtils-jar包还支持处理复杂的JavaBean属性,如集合、数组和嵌套属性。例如,如果JavaBean的属性是一个List,可以通过索引来获取或设置List中的元素。对于嵌套属性,如`person.address.city`,BeanUtils也能优雅...
`Converter`默认支持一些基础的数据类型,但不包括`java.util.Date`。对于不支持的类型,Beanutils会抛出异常。为了解决这个问题,可以使用自定义的转换器或者利用`ConvertUtils`注册自定义转换逻辑。 #### 五、...
- **集合操作**:BeanUtils也支持对集合类型的属性进行操作,如列表、数组等。 2. **使用场景**: - **数据绑定**:在Web开发中,BeanUtils常用于将HTTP请求参数绑定到JavaBean对象,简化表单数据处理。 - **...
apache的BeanUtils的copyProperty以及copyProperties方法不支持String与java.util.Date的类型相互转换; 该包对源码进行了部分修改,使其支持对String与Date之间的类型转换。 2008-07-17更新: 增加了BeanUtils的copy...
3. **类型转换**: BeanUtils库还包含一个强大的类型转换机制,允许在不同数据类型之间自动转换,如`ConvertUtils.convert()`方法。这使得在处理用户输入或者不同数据源时,能够灵活地处理各种数据类型。 4. **复制...
3. **类型转换**:BeanUtils提供了自动类型转换的能力,能够将字符串或其他类型的数据转换为JavaBean属性所需的类型。这极大地减少了手动进行类型检查和转换的工作。 4. **集合操作**:BeanUtils可以方便地将集合...
6. **国际化支持:** 虽然不是直接的功能,但BeanUtils与ResourceBundle结合使用,可以实现根据不同的语言环境设置Bean的属性值,适应多语言应用。 7. **自定义转换器:** 用户可以通过实现`org.apache.commons....
此外,BeanUtils还支持自定义转换器(Converter),这在处理不同类型之间的转换时非常有用。通过注册自定义的转换器,我们可以控制特定属性值的转换逻辑,比如日期字符串到Date对象的转换。 总的来说,BeanUtils是...