类型转换器的介绍
我们在正常开发中,SpringMVC帮我们配置好的类型转换器已经够我们使用了,但是我们还会遇到一些SpringMVC没有帮我配置好的类型转换,例如:时间日期类型的转换,字符串(非Json)和POJO之间的转换,这时我们就需要自定义一个类型转换器,来让SpringMVC能够帮我实现类型转换
SpringMVC具体帮我们实现了哪些类型转换器,大家可以看这篇博客 SpringMVC–Converter(类型转换器)详解
类型转换发生在视图和控制器之间相互递交数据的时候,例如:当我们从请求中获取参数的时候(实际上请求参数都是String类型的,但是我们可以将其传递给Integer类型的参数,这时就发生了自动类型转换)
下面说一下如何实现自定义类型转换器
- 自定义类型转换器,实现Convert接口
- 在配置文件中声明我们自定义的类型转换器(即,将自定义类型转换器交给Spring管理)
- 在<annotation-driven>中引用我们自定义的转换器
1.自定义类型转换器,实现Convert接口
public class DataConverter implements Converter<String, Date> {
@Override
public Date convert(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
2.在配置文件中声明转换器
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.itheima.converter.DataConverter"/>
</list>
</property>
</bean>
3.在<annotation-driven>中引用转换器
<mvc:annotation-driven conversion-service="conversionService"/>
所以我们可以在处理器(Controller)中,这样使用
@RequestMapping("/quick18")
@ResponseBody
public void save18(Date date) throws IOException {
System.out.println(date);
}
|