Author:lyore Date:2007-01-16 02:36
在用spring进行web开发过程中,经常遇到数据绑定的问题,而属性编辑器(PropertyEditor)在其中起到了举足轻重的作用。虽然spring内置了很多属性编辑器方便开发者,比如字节数组编辑器、类对象编辑器、文件对象编辑器等等,但对于实际开发中仍感到不足,这就需要自定义属性编辑器了。
现用一个简单例子说明过程,需求是将一个表明用户姓名的字符串绑定到一个Person对象,用户姓名由first name和end name组成,中间由点分隔,使用到的Person对象也很简单,只有firstName和endName属性以及相应的getter和setter方法。大致如下:
接下来实现编辑器,自定义编辑器必须继承PropertyEditorSupport类,并覆盖segAsText方法,本例子中代码如下:
最后通过使用CustomEditorConfigurer来为ApplicationContext注册一个新的PropertyEditor:
这样之后,在用户提交的注册的表单后的控制器中不用重复调用getParameter方法构建对象了属性了。
现用一个简单例子说明过程,需求是将一个表明用户姓名的字符串绑定到一个Person对象,用户姓名由first name和end name组成,中间由点分隔,使用到的Person对象也很简单,只有firstName和endName属性以及相应的getter和setter方法。大致如下:
- package sample;
- public class Person
- {
- private String firstName;
- private String endName;
- //getter and setter method goes here...
- }
接下来实现编辑器,自定义编辑器必须继承PropertyEditorSupport类,并覆盖segAsText方法,本例子中代码如下:
- package sample;
- public class PersonTypeEditor extends PropertyEditorSupport
- {
- public void setAsText(String text)
- {
- int index = text.indexOf(".");
- Person p = new Person();
- p.setFirstName(text.substring(0,index));
- p.setEndName(text.substring(index+1));
- setValue(p); //can not be omitted...
- }
- }
最后通过使用CustomEditorConfigurer来为ApplicationContext注册一个新的PropertyEditor:
- <bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <property name="customEditors">
- <map>
- <entry key="sample.Person">
- <bean class="sample.PersonTypeEditor"/>
- </entry>
- </map>
- </property>
- </bean>
这样之后,在用户提交的注册的表单后的控制器中不用重复调用getParameter方法构建对象了属性了。
Tags:
Java