SpringMVC的自定义类型转换时间格式
当页面传参数出现时间类型的数据时,如2020/02/02这样时间格式,我们的springMVC会自动转换成时间格式.
但是,如果出现2020-02-02类似的时间格式,springMVC就无法帮我们再次转换格式,会报400的错误
如解决呢?
SpringMVC提供了一个时间格式的接口Converter<S, T>,我们必须要自己定义时间格式,前提实现Converter的这个接口
其中:
Converter中的S代表我们的原数据,T表示转换后的格式
实例代码如下:
首先定义了一个StringToDataConverter类实现了Converter接口
package com.dawn.utils;
import org.springframework.core.convert.converter.Converter;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author: Dawn
* @date: 2021/7/27 8:18
* 把字符串转换成日期
*/
public class StringToDataConverter implements Converter<String, Date> {
/**
*
* @param source 传入的字符串
* @return
*/
@Override
public Date convert(String source) {
//判断
if(source == null){
throw new RuntimeException("请您传入数据");
}
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
// 把字符串转换成日期
return df.parse(source);
} catch (Exception e) {
throw new RuntimeException("数据类型转换失败");
}
}
}
第二步,注册过接口还要在springmvc的配置文件中配置
配置过程如下:
<!--配置自定义类型转换器-->
<bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters" >
<set>
<bean class="com.dawn.utils.StringToDataConverter"></bean>
</set>
</property>
</bean>
<!--开启springmvc注解的支持,同时将刚刚注册的conversionServiceFactoryBean加入进来-->
<mvc:annotation-driven conversion-service="conversionServiceFactoryBean"/>