自定义属性编辑器必须继承 PropertyEditorSupport 类,实现其中的setAsText()方法,将字面值转换为属性类型的对象,再调用setValue()方法,设置转置后的属性对象。
public class CustomCarEditor extends PropertyEditorSupport{
@Override
public void setAsText(String text) throws IllegalArgumentException {
System.out.println("调用setAsText()方法");
if(text==null || text.indexOf(",")==-1){
throw new IllegalArgumentException();
}
String[] infos = text.split(",");
Car car = new Car();
car.setBrand(infos[0]);
car.setMaxSpeed(Integer.parseInt(infos[1]));
car.setPrice(Double.parseDouble(infos[2]));
//调用父类的setValue方法设置转换后的属性对象
setValue(car);
}
}
<!-- 配置属性编辑器 -->
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<!-- 定义一个属性编辑器 -->
<entry>
<!-- 属性编辑器对应的属性类型 -->
<key><value>com.Spring.PropertyEditor.Car</value> </key>
<!-- 对应的属性编辑器Bean -->
<bean class="com.Spring.PropertyEditor.CustomCarEditor"></bean>
</entry>
</map>
</property>
</bean>
<bean id="boss" class="com.Spring.PropertyEditor.Boss">
<property name="name" value="John"></property>
<!-- 使用上面的属性编辑器完成属性填充操作 -->
<property name="car" value="宝马,200,200000"></property>
</bean>
</beans>
public class PropertyEditor {
public static void main(String[] args) {
ApplicationContext cxt = new ClassPathXmlApplicationContext ("com/Spring/PropertyEditor/bean.xml");
Boss boss = (Boss)cxt.getBean("boss");
boss.say();
}
}
CustomEditorConfigurer是实现了BeanFactoryPostProcessor接口的类,因此是一个Bean工厂后处理器,所以在容器启动后有机会注入自定义的属性编辑器。
自定义属性编辑器不常用,一般可以通过引用即<ref>其他的Bean即可,但是有时候比较复杂的情况下,会需要将属性对象一步步肢解为最终可用基本类型表示的Bean,反而会很糟糕,这时可以使用自定义属性编辑器,在setAsText()方法中将字面值转化为属性类型对象。
分享到:
相关推荐
NULL 博文链接:https://wooden-baby.iteye.com/blog/506838
spring中的自定义属性编辑器,是我博客中的源代码,spring中的自定义属性编辑器,是我博客中的源代码
springmvc自定义属性编辑器和参数解析器
NULL 博文链接:https://yxwang0615.iteye.com/blog/969360
NULL 博文链接:https://coolszy.iteye.com/blog/522095
java中的属性编辑器详细说明及Spring中AnnotationMethodHandlerAdapter说明和DefaultAnnotationHandlerMapping的说明及用法
SpringPropertyEditorDemo 演示使用自定义属性编辑器绑定Spring-MVC中用户定义的对象的集合
spring数据格式转换 自定义的属性编辑器进行数据绑定
1、ICO环境的搭建 2、属性注入 3、自定义属性编辑器 4、AOP实现 5、事务处理 6、Spring事务配置的五种方式 详解 7、Struts与Spring集成方案
4.3.3.详细讨论对象属性和构造器参数 4.3.3.1.设置空值 4.3.3.2.设置集合值 4.3.3.3.设置泛型集合的值 4.3.3.4.设置索引器属性 4.3.3.5.内联对象定义 4.3.3.6.idref节点 4.3.3.7.引用协作对象 4.3.3.8.value和ref...
5.2.3 自定义属性编辑器 5.3 使用外部属性文件 5.3.1 使用外部属性文件 5.3.2 使用加密的属性文件 5.3.3 属性文件自身的引用 5.4 引用Bean的属性值 5.5 国际化信息 5.5.1 基础知识 5.5.2 MessageSource 5.5.3 容器级...
5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的...
5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...
2.16 创建自定义属性编辑器 99 2.16.1 问题 99 2.16.2 解决方案 100 2.16.3 工作原理 100 2.17 使用TaskExecutor实现并发性 101 2.17.1 问题 101 2.17.2 解决方案 101 2.17.3 工作原理 102 2.18 小...
5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...
5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...
5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...
2.16 创建自定义属性编辑器 99 2.16.1 问题 99 2.16.2 解决方案 100 2.16.3 工作原理 100 2.17 使用TaskExecutor实现并发性 101 2.17.1 问题 101 2.17.2 解决方案 101 2.17.3 工作原理 102 2.18 小...
5.2.3 自定义属性编辑器 5.3 使用外部属性文件 5.3.1 使用外部属性文件 5.3.2 使用加密的属性文件 5.3.3 属性文件自身的引用 5.4 引用Bean的属性值 5.5 国际化信息 5.5.1 基础知识 5.5.2 MessageSource 5.5.3 容器级...
3.4注册自定义属性编辑器 3.5使用spring的特殊bean 3.5.1后处理bean 3.5.2bean工厂的后处理 3.5.3配置属性的外在化 3.5.4提取文本消息 3.5.5程序事件的解耦 3.5.6让bean了解容器 3.6脚本化的bean 3.6.1给...