Springmvc默认数据类型转换器并不能支持所有的类型转换,所以当我们需要某种他所不能支持的类型转换时,我们可以自定义创建数据类型转换器。
例如。在学习过程中都会遇到的提交日期问题,前端传String,到后端我们将他变为Date对象。
在提交下面这个表单时。我们输入的是String类型的数据。
<form action="./userinfo/add.do">
<input name="birth" placeholder="生日" />
<input type = "submit" value="提交"/>
</form>
而在vo类里面存放的birth为一个日期对象类
private Date birth;
假如我们这个时候进行直接提交。会出现400的错误。
这时我们就需要自定义一个数据类型转换器。 分三步走战略。
首先第一步。我们先定义一个数据类型转换器。并把它放入ioc容器中。下面定义的是String 转 Date 类型。
@Component
public class DateConverter implements Converter<String, Date> {
public Date convert(String birth) {
if(birth!=null && !"".equals(birth)) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
dateFormat.parse(birth);
} catch (ParseException e) {
e.printStackTrace();
}
}
return null;
}
}
第二部。我们再Spring 配置文件中将 这个DateConverter 类放入ConversionServiceFactoryBean的converters里面。
<bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<ref bean="dateConverter"/>
</set>
</property>
</bean>
第三步。加载到mvc:annotation-driven上面。
<mvc:annotation-driven conversion-service="conversionServiceFactoryBean"></mvc:annotation-driven>
至此数据类型转换器创建完毕,我们就可以放心的使用他了。