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"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值