`

关于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中的数据绑定,并提供实例帮助初学者理解。 1. **模型...

    spring数据绑定.docx

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

    学习Spring必学的Java基础知识(3)—PropertyEditor

    5. **PropertyEditor与国际化** - 在处理多语言环境时,`PropertyEditor`可以用来根据用户的语言环境转换显示的文本,例如将数字格式化为不同国家的格式。 6. **示例** 创建一个自定义的`PropertyEditor`,比如将...

    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 标签...

    SpringMVC之DataBinding和Validation--Validator,PropertyEditor,Converter,Formatter

    `PropertyEditor`是Java Swing时代的一个概念,但在Spring中,它被用来转换请求参数的字符串形式与其他类型的数据。例如,如果你需要将请求参数的日期字符串转换为`java.util.Date`对象,你可以自定义一个`...

    Spring MVC 3.0实战指南.ppt

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

    Spring3MVC注解教程.ppt

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

    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_FrameWork3.0

    - **PropertyEditor:** PropertyEditor 用于自定义 Bean 属性的类型转换规则,可以用于处理复杂的数据类型。 **3-4 节Spring表达式(SPEL)** - **SPEL 特性说明:** SPEL 支持对对象的属性进行查询和操作,可以...

    Spring 2.5 基于注解驱动的Spring MVC

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

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

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

    开源框架 Spring Gossip

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

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

    在Spring3之前,数据类型转换主要依靠`PropertyEditor`。这一过程包括以下步骤: - **类型转换**:首先,使用`PropertyEditor`的`setAsText(String)`方法将字符串转换为所需类型,然后通过`setValue(Object)`进行...

Global site tag (gtag.js) - Google Analytics