定制属性编辑器

JavaBean 的接口java.beans.PropertyEditor提供将字符串值映射成非String类型的方法(其直接实现类为PropertyEditorSupper):
1、	getAsText():返回一个属性的字符串
2、	setAsText(String text):将传递进来的字符串赋给bean的属性
3、	URLEditor:将字符串与java.net.URL相互交换
4、	ClassEditor:使用包含全称类名的字符串设置java.langClass属性
5、	CustomDateEditor:使用某种java.text.DateFormat对象将字符串设置给java.util.Date属性
6、	FileEditor:使用包含文件路径的字符串设置java.io.File属性
7、	LocaleEditor:使用包含地域信息(如“en_US”)的字符串设置java.util.Local属性
8、	StringArrayPropertyEditor:将一个包含逗号的string转换成string数字属性
9、	StringTrimmerEditor:自动修正字符串属性,可选择将字符串转换变成null
PersonServiceBean.java
public class PersonServiceBean {
	private String name;
	private String sex;
	private Integer age;
	private Date birth;
	//家庭住址
	private Address homeAddress;
	//公司地址
	private Address comAddress;
	public Address getHomeAddress() {
		return homeAddress;
	}
	public Address getComAddress() {
		return comAddress;
	}
	public void setHomeAddress(Address homeAddress) {
		this.homeAddress = homeAddress;
	}
	public void setComAddress(Address comAddress) {
		this.comAddress = comAddress;
	}
	public PersonServiceBean() {
		super();
		// TODO Auto-generated constructor stub
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Date getBirth() {
		return birth;
	}
	public void setBirth(Date birth) {
		this.birth = birth;
	}
	public PersonServiceBean(String name, String sex, Integer age, Date birth) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.birth = birth;
	}
	@Override
	public String toString() {
		return "PersonServiceBean [name=" + name + ", sex=" + sex + ", age="
				+ age + ", birth=" + birth + "]";
	}
}
Address.java
public class Address {
	private String province;
	private String city;
	private String street;
	private String zipCode;
	public Address() {
		super();
		// TODO Auto-generated constructor stub
	}
	public String getProvince() {
		return province;
	}
	public void setProvince(String province) {
		this.province = province;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getStreet() {
		return street;
	}
	public void setStreet(String street) {
		this.street = street;
	}
	public String getZipCode() {
		return zipCode;
	}
	public void setZipCode(String zipCode) {
		this.zipCode = zipCode;
	}
	public Address(String province, String city, String street, String zipCode) {
		super();
		this.province = province;
		this.city = city;
		this.street = street;
		this.zipCode = zipCode;
	}
	@Override
	public String toString() {
		return "Address [province=" + province + ", city=" + city + ", street="
				+ street + ", zipCode=" + zipCode + "]";
	}
}
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" >
<bean id="personServiceBean" class="cn.csdn.service.PersonServiceBean">
	<property name="name">
		<value>老王</value>
	</property>
	<property name="sex">
		<value>女</value>
	</property>
	<property name="age">
		<value>22</value>
	</property>
<!-- 出生日期    ref属性   引用已存在的id的名称 -->
		<property name="birth" >
			<ref bean="date"/>
		</property> 
		<property name="homeAddress" >
			<bean class="cn.csdn.service.Address">
				<property name="province">
					<value>北京</value>
				</property>
				<property name="city">
					<value>北京市</value>
				</property>
				<property name="street">
					<value>海淀区0008街道</value>
				</property>
				<property name="zipCode">
					<value>111111</value>
				</property>
			</bean>
		</property>
		<property name="comAddress" >
			<value>河南省.商丘市.梁园区0008街道.100000</value>
		</property>
</bean>
<bean id="date" class="java.util.Date"></bean>
<!-- 定制编辑器后处理 -->
<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
	<property name="customEditors">
		<map>
			<!-- key指向的是:需要转换的类 -->
			<entry key="cn.csdn.service.Address">
				<!-- value指向的是实现编辑器的类 -->
				<bean class="cn.csdn.editor.AddressEditor"></bean>
			</entry>
		</map>
	</property>
</bean>
</beans>
AddressEditor.java
public class AddressEditor extends PropertyEditorSupport{
	public void setAsText(String text) throws IllegalArgumentException{
		System.out.println("===========转换实现==================");
		//java实现转化
		if("".equals(text) || text!=null){
			//拆分
			String args[]=text.split("\\.");
			if(args.length>3){
				Address address=new Address();
				address.setProvince(args[0]);
				address.setCity(args[1]);
				address.setStreet(args[2]);
				address.setZipCode(args[3]);
				setValue(address);
			}else{
				this.setAsText(null);
			}
		}else{
			this.setAsText(null);
		}
	}
}
测试方法
	@Test
	public void test() {
		//第一步:获取应用上下文对象
				ApplicationContext ac=new ClassPathXmlApplicationContext(new String[]{"beans.xml"});
				//第二步:根据应用上下文对象获取bean的实例对象
				PersonServiceBean p= (PersonServiceBean) ac.getBean("personServiceBean");
				System.out.println(p.getHomeAddress().toString());
				System.out.println("利用自己定制的属性编辑器实现");
				System.out.println(p.getComAddress().toString());
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值