Apache类库之BeanUtils(二)-Converter
来源:互联网 发布:手淘宝一年级 编辑:程序博客网 时间:2024/06/05 06:16
Apache类库之BeanUtils
1. converters包
BeanUtils不仅提供了对象属性的操作,还提供了org.apache.commons.beanutils.converters,用于提供一些转换操作。
文档网址
http://commons.apache.org/proper/commons-beanutils/javadocs/v1.9.3/apidocs/index.html
主要类如下:
· AbstractArrayConverter
· AbstractConverter
· ArrayConverter
· BigDecimalConverter
· BigIntegerConverter
· BooleanArrayConverter
· BooleanConverter
· ByteArrayConverter
· ByteConverter
· CalendarConverter
· CharacterArrayConverter
· CharacterConverter
· ClassConverter
· ConverterFacade
· DateConverter
· DateTimeConverter
· DoubleArrayConverter
· DoubleConverter
· FileConverter
· FloatArrayConverter
· FloatConverter
· IntegerArrayConverter
· IntegerConverter
· LongArrayConverter
· LongConverter
· NumberConverter
· ShortArrayConverter
· ShortConverter
· SqlDateConverter
· SqlTimeConverter
· SqlTimestampConverter
· StringArrayConverter
· StringConverter
· URLConverter
2数组转换器(测试发现已经弃用)
· AbstractArrayConverter
· BooleanArrayConverter
· CharacterArrayConverter
· DoubleArrayConverter
· FloatArrayConverter
· IntegerArrayConverter
· LongArrayConverter
· StringArrayConverter
· ShortArrayConverter
· ByteArrayConverter
3普通转换器
3.1普通转换器总览
· AbstractConverter
· ArrayConverter
· BigDecimalConverter
· BigIntegerConverter
· BooleanConverter
· ByteConverter
· CalendarConverter
· CharacterConverter
· ClassConverter
· ConverterFacade
· DateConverter
· DateTimeConverter
· DoubleConverter
· FileConverter
· FloatConverter
· IntegerConverter
· LongConverter
· NumberConverter
· ShortConverter
· SqlDateConverter
· SqlTimeConverter
· SqlTimestampConverter
· StringConverter
· URLConverter
3.2 BooleanConverter
User类
public classUser {
private Stringname;
private Date birthday;
private Boolean gender;//true.男 false.女
public User(String name,Date birthday) {
this.name= name;
this.birthday= birthday;
}
public User() {
}
getter()and setter()
}
给user增加一个Boolean类型的数据,但是传入的值是String类型
private static void test2() throws InvocationTargetException, IllegalAccessException {// {"true", "yes", "y", "on", "1"};// {"false", "no", "n", "off", "0"}; String gender = "yes"; ConvertUtils.register(new BooleanConverter(),Boolean.class); User user = new User(); BeanUtils.setProperty(user,"gender",gender); System.out.println(user.getGender()); }
测试发现,传入"true", "yes", "y", "on","1"会自动将其转化为true,传入false", "no", "n", "off","0"会自动将其转化为false。
3.3StringConverter
将其他类型转化为string,这个
3.4ArrayConverter
第一种情况:一般不用。
· String valueString = "Foo,Bar";ArrayConverter arrayConverter = new ArrayConverter(String[].class, new StringConverter());String[] valueArray = arrayConverter.convert(String[].class, valueString);System.out.println(JSON.toJSONString(valueArray));
输出["Foo","Bar"],由此可见将一个含有“,”的字符串转化为字符串数组。
第二种情况:
valueString = "{Foo,Bar}";valueArray = arrayConverter.convert(String[].class, valueString);System.out.println(JSON.toJSONString(valueArray));
输出["Foo","Bar"],由此可见可以吧{}自动去掉。
第三种情况:
valueString = "Foo_Bar";valueArray = arrayConverter.convert(String[].class, valueString);System.out.println(JSON.toJSONString(valueArray));
输出["Foo","Bar"],由此可见“,”,“_”的字符串都可以呗分割。
第四种情况:
arrayConverter.setAllowedChars(new char[]{'_'});valueArray = arrayConverter.convert(String[].class, valueString);System.out.println(JSON.toJSONString(valueArray));
将“_”默认为允许,这样字符串不会被分割。
输出结果为:["Foo_Bar"]
第六种情况:
既然可以选择允许的字符,那也应该会能定义分割的字符。
看程序
String valueString1 = "1*2*3";ArrayConverter arrayConverter1 = new ArrayConverter(Integer[].class, new IntegerConverter());arrayConverter1.setDelimiter('*');Integer[] valueArray1 = arrayConverter1.convert(Integer[].class, valueString1);System.out.println(JSON.toJSONString(valueArray1));
原来分隔符是可以自定义的,怪不得CharacterArrayConverter过时了。
第六种情况:
String valueString1 = "1,2";ArrayConverter arrayConverter1 = new ArrayConverter(Integer[].class, new IntegerConverter());Integer[] valueArray1 = arrayConverter1.convert(Integer[].class, valueString1);System.out.println(JSON.toJSONString(valueArray1));
可以将字符串数组转化为int数组。
输出结果为:[1,2]
3.5IntegerConverter
int[] values = new int[]{1, 2};ArrayConverter arrayConverter = new ArrayConverter(Integer[].class, new IntegerConverter());String value = arrayConverter.convert(String.class, values);System.out.println(JSON.toJSONString(value));arrayConverter.setOnlyFirstToString(false);value = arrayConverter.convert(String.class, values);System.out.println(JSON.toJSONString(value));
运行结果
"1"
"1,2"
默认只转换指针为0的。
4.时间转换器DateLocaleConverter
User user = new User();String birtthday = "1991-5-22";ConvertUtils.register(new DateLocaleConverter(),Date.class);BeanUtils.setProperty(user,"birthday",birtthday);System.out.println(user.getBirthday());
输出结果:Wed May 22 00:00:00 CDT 1991 把字符串转化为Date类型。只要简单的注册就可以,不用写拦截器之类了。
另外还可以自定义格式。
User user = new User();String birtthday = "1991#5#22";DateConverter dateLocaleConverter = new DateConverter();dateLocaleConverter.setPattern("yyyy#MM#dd");ConvertUtils.register(dateLocaleConverter,Date.class);BeanUtils.setProperty(user,"birthday",birtthday);System.out.println(user.getBirthday());
输出结果为:Wed May 22 00:00:00 CDT 1991
- Apache类库之BeanUtils(二)-Converter
- org/apache/commons/beanutils/Converter
- Apache类库之BeanUtils(一)-学习报告
- Java工具类之Apache的BeanUtils
- Java工具类之Apache的Commons Lang和BeanUtils
- Java工具类之Apache的Commons Lang和BeanUtils
- Java工具类之Apache的Commons Lang和BeanUtils
- Java工具类之Apache的Commons Lang和BeanUtils
- Java工具类之Apache的Commons Lang和BeanUtils
- Java工具类之Apache的Commons Lang和BeanUtils
- Java工具类之Apache的Commons Lang和BeanUtils
- Java工具类之Apache的Commons Lang和BeanUtils
- Java工具类之Apache的Commons Lang和BeanUtils
- Java工具类之Apache的Commons Lang和BeanUtils
- Java工具类之Apache的Commons Lang和BeanUtils
- Java工具类之Apache的Commons Lang和BeanUtils
- SSH整合问题java.lang.NoClassDefFoundError: org/apache/commons/beanutils/Converter
- 启动tomcat就报错:java.lang.ClassNotFoundException: org.apache.commons.beanutils.Converter
- hdu-6153
- git创建远程仓库
- 各种存储器的区别
- 关于android app不注重过度绘制问题
- 获得jsp页面当前项目的访问路径
- Apache类库之BeanUtils(二)-Converter
- 关于中文两端对齐的css样式设置
- Shell标准输出、标准错误 >/dev/null 2>&1
- java工具类之NumberUtils
- Data Structure学习之旅——排序
- PAT_1078. Hashing
- java之URLConnection成员变量doInput和doOutput
- ssh 快速登录
- HYSBZ