关于Spring数据绑定与PropertyEditor

关于Spring数据绑定与PropertyEditor

要进行绑定的类型是我自己定义的。

package mypackage;

public class Address { // 地址类
private String zip; // 邮编
private String city; // 城市
private String street; // 街道

// 为了省博客的篇幅,这里就不写getter和setter啦
}


实现一个自己的PropertyEditor。用不着从头开始,有一个给我们继承。

package mypackage;

import java.beans.PropertyEditorSupport;

public class AddressPropertyEditor extends PropertyEditorSupport {

@Override
public String getAsText() {
Address address = (Address) getValue(); // super.getValue() 顾名思义,得到我们要转换的那个对象
return new StringBuilder()
.append(address.getZip() + ",")
.append(address.getCity() + ",")
.append(address.getStreet())
.toString();
}

@Override
public void setAsText(String text) throws IllegalArgumentException {

if (text == null || text.equalsIgnoreCase("")) {
throw new IllegalArgumentException();
}

Address value = new Address();
String[] ss = text.split("::", 3);
value.setZip(ss[0]);
value.setCity(ss[1]);
value.setStreet(ss[2]);

setValue(value); // super.setValue()也是顾名思义可以知道它是干什么的
}
}


最后这个自定义的属性编辑器当然要注册给spring

<bean id="customEditorConfigurer"
class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="mypackage.Address">
<bean class="mypackage.AddressPropertyEditor" />
</entry>
</map>
</property>
</bean>


试一试,把下面这个bean的属性都打印一下
果然自定义的属性编辑器生效了。

package mypackage;

@Component
public class Person {

@Value("1")
private Integer id;

@Value("yingzhuo")
private String name;

@Value("1234")
private String password;

@Value("410007::changsha::laodong road.")
private Address address;

// getter and setter
}


虽然跟我们想的功能一样,但是spring给出一个警告。
【Passing PropertyEditor instances into CustomEditorConfigurer is deprecated: use PropertyEditorRegistrars or PropertyEditor class names instead.】

到spring官方网站去看看说明,修改一下配置可以消除这个警告。

<bean id="customEditorConfigurer"
class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="mypackage.Address"
value="mypackage.AddressPropertyEditor" />
</map>
</property>
</bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值