SpringMvc会自动对参数进行类型转换,但某些情况下自动类型转换会出错
比如,对日期类仅支持 yyyy/MM/dd形式,如果是yyyy-MM-dd则会报错,此时需要手动定义类型转换器
一、创建一个工具类StringToDateConvert
该类实现Converter接口(注意core包下),并实现 convert 方法
package util;
import org.springframework.core.convert.converter.Converter;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDateConvert implements Converter<String, Date> {
@Override
public Date convert(String source) {
if(source.equals("")){
throw new RuntimeException("参数为空");
}else{
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
return sdf.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
}
return null;
}
@Override
public <U> Converter<String, U> andThen(Converter<? super Date, ? extends U> after) {
return Converter.super.andThen(after);
}
}
二、在xml中配置
首先,配置bean
<!-- 配置自定义类型转换器-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="util.StringToDateConvert"/>
</set>
</property>
</bean>
接下来,需要开启注解支持。
这里,由于不同版本的xml可能导致无法使用某些标签,这里引入新的命名空间mc
xmlns:mc="http://www.springframework.org/schema/mvc"
并在xsi对应顺序中添加路径
http://www.springframework.org/schema/mvc/spring-mvc.xsd
此时,就可以添加mc标签了
<!-- 开启SpringMVC框架注解支持-->
<mc:annotation-driven conversion-service="conversionService"/>
再次测试,就可以发现 yyyy-MM-dd 类型的字符串可以通过类型转换
本篇完,还有疑问?留下评论吧