SpringMVC自定义类型转换器

依然范特西╮ 提交于 2019-12-03 11:00:25

1、原因

我们提交数据的时候,request中的数据都是以String的类型存在的,Spring会做一些类型转换,将这些数据转换成我们所需要的数据类型(int、float等)。对于日期来说,Spring支持的格式是2019/11/11,当我们传入2019-11-11,程序会报错,这时候就需要我们自定义类型转换器来满足我们的需要。

2、实现方法

  1. 定义一个类实现Converter接口,该接口有两个泛型。

    public interface Converter<S, T> { //S:表示接受的类型,T:表示目标类型
     @Nullable
     T convert(S source);
    }
  2. 类具体代码如下:

    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!");
            }
        }
    }
  3. 在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"/>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!