springmvc的类型转换器converter

这个convter类型转换是器做什么用的?

他是做类型转换的,或者数据格式化处理。可以把数据在送到controller之前做处理。变成你想要的格式或者类型。方便我们更好的使用。

比如说你从前台传过来一个日期,它的格式不是你想要的,这时你就可以自定义一个controller转换器,帮你做日期格式化这件事。就像我们以前,

写的工具类一样,只不过,springmvc给我们提供了这种功能,在更方便我们使用。在需要时自动帮我们做这件事了。接下来看看它是怎样实现的?


 

这里演示把一个string字符串转换成一个对象。格式话就更简单了。根据你的想象大胆的设计它,帮你更好的完成工作。


 

首先我们来定义目标类,目标类就是要转换成该类型的对象。

定义一个bean,MyPhone,他有俩属性areaCode(区号),phoneNum(电话号码),给他们getter和setter方法。ok,这个bean定义好了。

 


 

接下来定义一个中转模型,这个模型就是做数据类型转换或者是数据格式化的中转。定义一个modelBean,UserModel,把目标类的对象MyPhone给他,给他getter

和setter方法,ok,这个bean定义好了。

 


 

下面是核心,自定义,转换器。要完成这样一个操作我们要使用springmvc给我们提供的一个接口,Converter,我们要实现这个接口并且给他一个泛型,

Converter<被转换类型,转换成的类型>,然后按你的构思实现他的方法convert,去让他帮你完成你想要干的事。

 

/**
* @目标类型作为模型类的属性,我们前面定义好了。
* @这里将完成把String型数据转为目标类型的操作
* @转换器关键代码 实现String转MyPhone @如010-234234324 转为MyPhone
*/
public class MyConverter implements Converter<String, MyPhone> {
@Override
public MyPhone convert(String source) {
System.out.println("转换了没?");
MyPhone phone = new MyPhone();
//将字符串按照某种规则拆分成字符串数组
String[] strArr = source.split("-");
String areaCode = strArr[0];
String phoneNum = strArr[1];
phone.setAreaCode(areaCode);
phone.setPhoneNum(phoneNum);
return phone;
}
// 参数是源类型(要转换的字符串),返回的是目标类型
}

 


 

这是controller的写法,这里说一下中转模型吧,它的属性名是触发类型转换的关键。你想要转换就拿这个模型作为controller的入参就OK了。

 

@Controller
@RequestMapping("/xx")
public class Example4Controller {
@RequestMapping("/example")
public String toSuccessPage(UserModel user, Model model) {
System.out.println("阿呆的挂念");
model.addAttribute("user", user);
return "example4";
}
}

 

 


 

最后一步,在spirngmvc.xml中注册转换器。springmvc的ConversionServiceFactoryBean类会帮我们把转换器,在HandlerMapping组件将url分配给controller之前执行转换器。

 

<!-- springmvc注解驱动标签,引入转换器 -->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
<!--  注册转换器,并注入自定义的转换器 -->
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.xxx.util.MyConverter" />
</list>
</property>
</bean>

 


 

 ok这样一个流程写完你可以用了。

 

转载于:https://www.cnblogs.com/zhizhuoDEZHUZHU/p/9633358.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值