`

关于Spring数据绑定与PropertyEditor

阅读更多
关于Spring数据绑定与PropertyEditor

要进行绑定的类型是我自己定义的。
package mypackage;

public class Address {		// 地址类
	private String zip;			// 邮编
	private String city;		// 城市
	private String street;		// 街道

	// 为了省博客的篇幅,这里就不写getter和setter啦
}


实现一个自己的PropertyEditor。用不着从头开始,有一个给我们继承。
package mypackage;

import java.beans.PropertyEditorSupport;

public class AddressPropertyEditor extends PropertyEditorSupport {

	@Override
	public String getAsText() {
		Address address = (Address) getValue();			// super.getValue() 顾名思义,得到我们要转换的那个对象
		return new StringBuilder()
			.append(address.getZip() + ",")
			.append(address.getCity() + ",")
			.append(address.getStreet())
			.toString();
	}

	@Override
	public void setAsText(String text) throws IllegalArgumentException {

		if (text == null || text.equalsIgnoreCase("")) {
			throw new IllegalArgumentException();
		}

		Address value = new Address();
		String[] ss = text.split("::", 3);
		value.setZip(ss[0]);
		value.setCity(ss[1]);
		value.setStreet(ss[2]);

		setValue(value);								// super.setValue()也是顾名思义可以知道它是干什么的
	}
}


最后这个自定义的属性编辑器当然要注册给spring
<bean id="customEditorConfigurer"
	class="org.springframework.beans.factory.config.CustomEditorConfigurer">
	<property name="customEditors">
		<map>
			<entry key="mypackage.Address">
				<bean class="mypackage.AddressPropertyEditor" />
			</entry>
		</map>
	</property>
</bean>


试一试,把下面这个bean的属性都打印一下
果然自定义的属性编辑器生效了。
package mypackage;

@Component
public class Person {

	@Value("1")
	private Integer id;

	@Value("yingzhuo")
	private String name;

	@Value("1234")
	private String password;

	@Value("410007::changsha::laodong road.")
	private Address address;

	// getter and setter
}


虽然跟我们想的功能一样,但是spring给出一个警告。
【Passing PropertyEditor instances into CustomEditorConfigurer is deprecated: use PropertyEditorRegistrars or PropertyEditor class names instead.】

到spring官方网站去看看说明,修改一下配置可以消除这个警告。
<bean id="customEditorConfigurer"
	class="org.springframework.beans.factory.config.CustomEditorConfigurer">
	<property name="customEditors">
		<map>
			<entry key="mypackage.Address"
				value="mypackage.AddressPropertyEditor" />
		</map>
	</property>
</bean>
分享到:
评论
2 楼 yingzhor 2012-07-17  
是哦。 你好细心,我主要是想把自己公司名称给去掉。 结果就改了后面,没有改前面。
1 楼 tangleway 2012-07-17  
写得不错,就是最后那段配置里的包名和前面的不一致。

相关推荐

    Spring+MVC数据绑定大全+

    Spring MVC 数据绑定大全是指 Spring MVC 框架中提供的一种强大的数据绑定机制,通过 PropertyEditor 机制可以实现多种数据类型的绑定。开发者可以根据需要注册自定义的 PropertyEditor,以实现特定的数据绑定需求。

    spring数据绑定.docx

    Spring框架中的数据绑定是将用户输入或其他数据源的数据与应用程序对象的属性进行关联的过程。它使得我们可以方便地在HTTP请求参数、配置文件等与JavaBean属性之间进行转换和赋值。Spring提供了强大的数据绑定功能,...

    25 Spring Core 数据绑定之BeanWrapper实现示例及背后原理探究慕课专栏1

    总的来说,Spring Core的数据绑定通过BeanWrapper和`PropertyEditor`系统提供了一种高效且灵活的方式来处理属性值的设定。`PropertyEditor`作为类型转换的核心,可以根据需要自动或手动地将数据转换为JavaBean属性所...

    springmvc数据绑定示例程序

    在Spring MVC框架中,数据绑定是一项核心功能,它允许开发者将HTTP请求参数与Java对象的属性进行映射,简化了Web应用中数据处理的过程。本示例程序是基于Maven构建的一个项目,旨在演示如何在Spring MVC中实现数据...

    26 Spring Core 数据绑定之DataBinder实现示例及背后原理探究慕课专栏(1)1

    在Spring框架中,数据绑定是一项核心功能,它使得开发者能够方便地将用户输入的数据与Java对象的属性对应起来。本文将深入探讨Spring Core中的数据绑定,特别是DataBinder的实现示例及其背后的原理。 首先,让我们...

    spring数据格式转换

    Spring提供了一种机制,通过`PropertyEditor`接口实现自定义的数据类型转换。`PropertyEditor`是一个简单的接口,包含`setAsText()`和`getAsString()`两个方法,分别用于将字符串转换为目标类型和将目标类型转换回...

    SpringMVC 数据绑定实例详解

    在 SpringMVC 框架内部,数据绑定是通过 `DataBinder` 类实现的,它使用 `PropertyEditor` 来转换不同类型的数据。`PropertyEditor` 是 Java 提供的一种机制,用于将字符串形式的数据转换为特定的 Java 类型。Spring...

    spring mvc使用@InitBinder标签对表单数据绑定的方法

    这是因为 Spring MVC 框架中的数据绑定机制是通过 PropertyEditor 来实现的,而 PropertyEditor 只能处理 String 到基本数据类型的转换。如果我们想要将表单中的数据绑定到 Bean 中,我们需要使用 @InitBinder 标签...

    Spring MVC 3.0实战指南.ppt

    数据绑定机理 数据类型转换 PropertyEditor依然有效 强大的ConversionService,让很多梦想成真 基于ConversionService体系,定义自定义的类型转换器 格式化:带格式字符串内部对象 相互转换 使用支持格式化的...

    Spring3MVC注解教程.ppt

    数据绑定机理 数据类型转换 PropertyEditor依然有效 强大的ConversionService,让很多梦想成真 基于ConversionService体系,定义自定义的类型转换器 格式化:带格式字符串内部对象 相互转换 使用支持格式...

    Spring 2.5 基于注解驱动的Spring MVC

    Spring允许你通过注册自定义的`PropertyEditor`来处理自定义类型的数据绑定。这可以通过实现`PropertyEditorSupport`类并使用`@InitBinder`注解在Controller中注册。 ```java @Controller public class ...

    Spring boot如何配置请求的入参和出参json数据格式

    首先,针对请求入参的JSON数据格式配置,特别是日期类型的字段,我们需要创建一个自定义的日期编辑器(PropertyEditor)。例如,`DateEditor` 类继承自 `PropertyEditorSupport`,用于将JSON中的日期字符串转换为...

    Spring-Reference_zh_CN(Spring中文参考手册)

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的...

    开源框架 Spring Gossip

    结合 JSTL &lt;spring:bind&gt; 标签 数据绑定的几个方法 &lt;spring:message&gt; 标签 &lt;spring:transform&gt; 标签 其它 View 层 除了 JSP View 层技术之外,您还可以使用其它的 View 层技术,或建立...

    Spring 2.0 开发参考手册

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Spring中文帮助文档

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    spring chm文档

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Spring API

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    第十五章 Spring 类型转换(Type Conversion)1

    torSupport 类提供了对属性编辑器的基本支持,但同时也包含了与 GUI 相关的方法,这使得在纯粹的非 GUI 环境中使用时显得不够纯粹。Spring 为了解决这个问题,引入了更现代且更为灵活的类型转换系统。 Spring 3.0 ...

    专题资料(2021-2022年)SpringMVC数据类型转换要点.doc

    在Spring 3之前,数据转换、验证和格式化主要依赖于`PropertyEditor`。这个机制的工作流程如下: 1. 类型转换:使用`PropertyEditor`的`setAsText(String)`方法将字符串转换为对象,然后通过`setValue(Object)`设置...

Global site tag (gtag.js) - Google Analytics