1、原因
我們提交數據的時候,request中的數據都是以String的類型存在的,Spring會做一些類型轉換,將這些數據轉換成我們所需要的數據類型(int、float等)。對於日期來說,Spring支持的格式是2019/11/11,當我們傳入2019-11-11,程序會報錯,這時候就需要我們自定義類型轉換器來滿足我們的需要。
2、實現方法
-
定義一個類實現Converter接口,該接口有兩個泛型。
public interface Converter<S, T> { //S:表示接受的類型,T:表示目標類型 @Nullable T convert(S source); }
-
類具體代碼如下:
public class StringToDataConverter implements Converter<String, Date> { @Override public Date convert(String source) { if (null == source) throw new RuntimeException("source is null!"); try { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); return df.parse(source); } catch (ParseException e) { throw new RuntimeException("Converter String to Date failed!"); } } }
-
在springmvc.xml配置文件中添加配置:
<!--配置自定義類型轉換器--> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.lin.utils.StringToDataConverter"/> </set> </property> </bean> <!--開啟springMVC框架注解的支持,增加類型轉換器,使其生效--> <mvc:annotation-driven conversion-service="conversionService"/>