SpringMVC-自定义类型转换器

1.为什么要自定义类型转换器?

首先要知道我们在页面中提交的数据都是字符串类型,比如年龄,用户名,密码等;
在springMVC中,为了接受前端的参数,给我们提供了一种简便方式,就是可以用javaBean对象来接收参数
前提是javaBean中的属性名要和页面中的提交的名字相同

<input type="text" name="username">
<input type="text" name="age">

那么在javaBean中对应的属性名就必须是username;
注意这里的属性其实是对应的成员变量的set方法名,去掉set,然后首字母小写
即属性==setUsename–>Username–>username

class User{
	private String username;
	private Integer age;
	public void setUsername(String username){
		this.username= username
	}
	......
}

之后就会把页面传入的参数通过set方法赋值给成员变量
不过,这里成员变量age是Integer类型的?
然而传入的是字符串?是怎样赋值的呢?不会报错吗?

其实这里不用担心,springMVC已经给我们把传入的数据进转换(通过默认的转换器)为对应的类型;

不过当我们的类型是Date日期类型时,SpringMVC就不太友好了;他规定了我们传入的日期类型的格式,比如写2020/11/1可以成功,但是我们写2020-11-1就会报错;

因此针对这一点,我们需要自己写一个转换器来解决这一问题!!

2.如何定义自定义类型转换器

1.首先我们需要自定义一个类实现Converter<S,T>接口
(注意不要导错包!!)
在这里插入图片描述

public class MyConverter implements Converter<String, Date>{

    /*
    * s:指的是传进来的值
    * */
    @Override
    public Date convert(String s) {
        if (s == null) {
            throw new RuntimeException("请您传入数据..");
        }
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        try {
            return df.parse(s);
        } catch (ParseException e) {
            throw new RuntimeException("数据类型转换错误..");
        }
    }
}

2.然后在springMVC.xml配置文件中配置自定义类型转换器

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters" >
            <set>
                <bean class="com.jw.Converter.MyConverter"></bean>
            </set>
        </property>
    </bean>

这一步是在ConversionServiceFactoryBean组件中加上自己定义的转换器;

接下来在mvc名称空间中声明即可:

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

这样自定义类型转换器就ok了,你自己写的转换器会加在springMVC默认的转换器之中,也就是现在日期可以支持你定义的那种格式了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值