SpringMVC-自定义类型转换器

2021/4/19 18:55:57

本文主要是介绍SpringMVC-自定义类型转换器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!


SpringMVC-自定义类型转换器

  • 1.为什么要自定义类型转换器?
    • 2.如何定义自定义类型转换器


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:指的是传进来的值
    * */@Overridepublic 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默认的转换器之中,也就是现在日期可以支持你定义的那种格式了



这篇关于SpringMVC-自定义类型转换器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程