SpringMVC传参定义类型转换

😂 这篇文章最后更新于1730天前,您需要注意相关的内容是否还可用。
目录导航
  • SpringMVC中的转换器
  • 自定义类型转换器
  • SpringMVC中的转换器

    表单提交的任何数据类型全部都是字符串类型,但是后台定义接收类型是Integer类型,数据也可以封装上,说明 Spring框架内部会默认进行数据类型转换。

    自定义类型转换器

    已知有自带的类型转换器,但在特殊情况下可能并不能满足需要,那如何自定义使用类型转换器呢?

    例如,前台输入2019/08/08在后端可以被Date接收,但是前台传的是2019-08-08怎么办,直接写会报错,转换器代码如下:

    import org.springframework.core.convert.converter.Converter;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * 自定义日期转换 Converter中泛型第一个指转换的原类型,第二个是目标转换类型
     */
    public class StringToDateConverter implements Converter<String, Date> {
        /**
         * 进行类型转换的方法
         */
        @Override
        public Date convert(String source) {
    // 判断 source其实就是值SpringMVC传来的值
            if(source == null) {
    //            运行时异常 运行出错停止运行
                throw new RuntimeException("参数不能为空");
            }try {
                DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    // 解析字符串
                Date date = df.parse(source);
                return date;
            } catch (Exception e) {
                throw new RuntimeException("类型转换错误");
            }
        }
    }
    

    开始在springmvc.xml中配置自定义的转换器

    <!-- 注册自定义类型转换器 -->
    <bean id="conversionService"
    class="org.springframework.context.support.ConversionServiceFactoryBean">
    	<property name="converters">
            <set>
                <bean class="com.cway.utils.StringToDateConverter"/>
            </set>
    	</property>
    </bean>
    <!-- 开启Spring对MVC注解的支持 增加类型转换器 -->
    <mvc:annotation-driven conversion-service="conversionService"/>