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>
至此數據類型轉換器創建完畢,我們就可以放心的使用他了。