前面一篇笔记中提到,前端传递的 HTTP 参数都是 String 字符串类型,当我们后台接收 int 类型时,HandlerAdapter 可以自动完成数据类型转换。
但如果是其他非基本数据类型呢?
比如 Date类型,HandlerAdapter 是无法将 String类型自动转换成 Date类型的,此时需要实现 Converter接口来辅助 Spring MVC完成数据类型转换。
1、创建 DateConverter 类,并实现 Converter 接口。
public class DateConverter implements Converter<String, Date> {
private String pattern;
public DateConverter(String pattern) {
this.pattern = pattern;
}
@Override
public Date convert(String s) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
try {
return simpleDateFormat.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
2、编写 springmvc.xml
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.guozh.converter.DateConverter">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd"/>
</bean>
</list>
</property>
</bean>
<mvc:annotation-driven conversion-service="conversionService"/>
除了 Date 这种数据类型,还能转换成自定义对象,比如创建一个实体类对象 Student,然后定义一个 Converter<String,Student> 转换类,代码如上一样。
以上代码笔记内容来自付费专栏:案例上手 Spring 全家桶
PS:并没有透露关键内容,纯粹是零碎笔记。如果侵犯版权,请联系我。
本文由老郭种树原创,转载请注明:https://guozh.net/spring-custom-data-converter/