spring 强大的PropertyEditor

    今天看了一下spring的Data Binding,觉得挺强大,记录一下,以免忘记。

 

public class User{

private String name;

private Son son;

public Son getSon() {

return son;

}

public void setSon(Son son) {

this.son = son;

}

 

}

 

 

public class Son{

private String name;

public Son(){}

public Son(String name) {

this.name = name;

}

 

}

 

 

<bean id="user" class="com.lhacker.domain.User">

<property name="name" value="Dylan" />

<property name="son" value="Dylan的儿子"/>

</bean>

 

 

不需要配置son的bean,只需要以上的一个配置,spring就会初始化Son,并把“Dylan的儿子"根据Son的有参构造函数,把值绑定在name属性中。

 

 

还可以定义自己的TypeEditor,继承java提供的PropertyEditorSuppor.

 

public class ExoticTypeEditor extends PropertyEditorSupport {

 

@Override

public void setAsText(String text) throws IllegalArgumentException {

setValue(new Son(text.toUpperCase()));

}

 

}

 

 

 

<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer"> 

<property name="customEditors"> <map> <entry key="com.lhacker.domain.Son" 

value="com.lhacker.controller.util.ExoticTypeEditor" /> </map> </property> 

</bean>

 

 

这样,就可以将Son的name属性值绑定为"DYLAN的儿子"。

 

还有另一种方式

 

public class CustomPropertyEditorRegistrar implements PropertyEditorRegistrar {

 

@Override

public void registerCustomEditors(PropertyEditorRegistry registry) {

registry.registerCustomEditor(Son.class, new ExoticTypeEditor());

}

 

}

 

<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">

<property name="propertyEditorRegistrars">

<list>

<ref bean="customPropertyEditorRegistrar" />

</list>

</property>

</bean>

 

<bean id="customPropertyEditorRegistrar" class="com.lhacker.controller.util.CustomPropertyEditorRegistrar" />

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值