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());
}
定制属性编辑器
最新推荐文章于 2023-02-26 01:04:13 发布