spring中的自定义编辑器
一个bean中有另一个bean的属性,用自定义编辑器,可以省bean标签。
编辑器的代码:
public class AddressEditer extends PropertyEditorSupport{
@Override
public String getAsText() {
// TODO Auto-generated method stub
return super.getAsText();
}
@Override
public void setAsText(String text) throws IllegalArgumentException {
// TODO Auto-generated method stub
if(text!=null&&(!text.trim().equals(""))){
String str[]=text.split("-");
if(str.length==3){
AddressServiceImpl asi=new AddressServiceImpl();
asi.setAddress(str[0]);
asi.setCode(str[1]);
asi.setTel(str[2]);
setValue(asi);
}
}else{
setValue(null);
}
}
}
xml中的部分代码:
<!-- 定义一个自定义编译器 -->
<bean id="customEditorConfigurer"
class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<!-- key指定的是解析类的全名 -->
<entry key="cn.csdn.service.AddressServiceImpl">
<!-- value指定你的解析类的解析类 -->
<bean class="cn.csdn.util.AddressEditer"/>
</entry>
</map>
</property>
</bean>
<bean id="empServiceImpl" class="cn.csdn.service.EmpServiceImpl"
scope="singleton" dependency-check="all">
<property name="name">
<value>guo</value>
</property>
<property name="age">
<value>22</value>
</property>
<property name="email">
<value>guo@qq.com</value>
</property>
<!--没有用自定义编辑器-->
<property name="homeaddress">
<bean class="cn.csdn.service.AddressServiceImpl">
<property name="address">
<value>河北保定</value>
</property>
<property name="code">
<value>071000</value>
</property>
<property name="tel">
<value>29823981239</value>
</property>
</bean>
</property>
<!--使用自定义编辑器--->
<property name="companyddress">
<value>河北邢台-054200-7989889</value>
</property>
</bean>
源文件已上传至:http://download.youkuaiyun.com/source/3260114