spingmvc转换器

当输入的url为http://localhost:8090/convert?time=1992-02-03时,这边传递的time的类型是字符串,springmvc中没有直接提供String转换成Date的转换器,所以用Date类型的参数进行接收时,会发生错误。

@GetMapping("/convert")
    public String convert(Date time, Model model){
        model.addAttribute("msg", "转换成功");
        return "hello";
    }

发生错误:
在这里插入图片描述

这边要自定义一个字符串到Date的转换器

  • 定义一个转换器类
public class StringToDateConvert implements Converter<String,Date>{

    public Date convert(String s) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = simpleDateFormat.parse(s);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
}
  • springmvc.xml中需要注册该转换器

在ConversionServiceFactoryBean中,可以发现converters是该类的一个成员变量。

public class ConversionServiceFactoryBean implements FactoryBean<ConversionService>, InitializingBean {
    @Nullable
    private Set<?> converters;
    @Nullable
    private GenericConversionService conversionService;

    public ConversionServiceFactoryBean() {
    }

    public void setConverters(Set<?> converters) {
        this.converters = converters;
    }
}

所以在springmvc中配置时,可以在ConversionServiceFactoryBean中注入该属性,即注入自定义的由String转成Date的类型转换器。

<bean id="convertService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <array>
                <bean class="com.kuang.convert.StringToDateConvert"></bean>
            </array>
        </property>
 </bean>

最后引用该转换服务

<mvc:annotation-driven conversion-service="convertService"/>

版权声明:本文为qq_17765089原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。