自定义属性编辑器
一个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.csdn.net/source/3260114