定制属性编辑器

来源:互联网 发布:java词汇大全 编辑:程序博客网 时间:2024/06/05 15:44
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:自动修正字符串属性,可选择将字符串转换变成nullPersonServiceBean.javapublic 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;}@Overridepublic String toString() {return "PersonServiceBean [name=" + name + ", sex=" + sex + ", age="+ age + ", birth=" + birth + "]";}}Address.javapublic 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;}@Overridepublic 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.javapublic 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);}}}测试方法@Testpublic 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());}

原创粉丝点击