当前位置: 首页 > java>阅读正文

SpringMvc自定义类型转换器

2021.12.26 朱丰华 161 次 留下评论 1296字

SpringMvc会自动对参数进行类型转换,但某些情况下自动类型转换会出错

比如,对日期类仅支持 yyyy/MM/dd形式,如果是yyyy-MM-dd则会报错,此时需要手动定义类型转换器

一、创建一个工具类StringToDateConvert

该类实现Converter接口(注意core包下),并实现 convert 方法

package util;

import org.springframework.core.convert.converter.Converter;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class StringToDateConvert implements Converter<String, Date> {
    @Override
    public Date convert(String source) {
        if(source.equals("")){
            throw new RuntimeException("参数为空");
        }else{
            DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            try {
                return sdf.parse(source);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    public <U> Converter<String, U> andThen(Converter<? super Date, ? extends U> after) {
        return Converter.super.andThen(after);
    }
}

二、在xml中配置

首先,配置bean

<!--    配置自定义类型转换器-->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="util.StringToDateConvert"/>
            </set>
        </property>
    </bean>

接下来,需要开启注解支持。

这里,由于不同版本的xml可能导致无法使用某些标签,这里引入新的命名空间mc

xmlns:mc="http://www.springframework.org/schema/mvc"

并在xsi对应顺序中添加路径

http://www.springframework.org/schema/mvc/spring-mvc.xsd

此时,就可以添加mc标签了

<!--    开启SpringMVC框架注解支持-->

    <mc:annotation-driven conversion-service="conversionService"/>

再次测试,就可以发现 yyyy-MM-dd 类型的字符串可以通过类型转换

本篇完,还有疑问?留下评论吧

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注