从前端提交过来的所有参数都是字符串类型,而SpringMVC框架已经帮我们做了很多自动化转换工作,例如:String转数字类型,Boolean类型等。但是,很多时候我们依旧需要根据实际情况去定义自己的转换类,例如:将2010-01-01 20:05:06这样的字符串转换成Date日期类型,这时候我们就需要自定义类型转换器了。
下面记录自定义转换器的开发过程。
1、创建自定义类型转换器类,并实现Converter<S,T>接口
需要注意的是,这里的Converter接口所在的包为:org.springframework.core.convert.converter
1 | import org.springframework.core.convert.converter.Converter; |
2、在Spring配置文件中配置ConversionServiceFactoryBean对象
在项目的Spring配置文件中的 beans 下添加 bean 节点,本项目的Spring配置文件为application.xml。配置代码如下:
1 | <!--配置自定义类型转换器--> |
3、配置ConversionServiceFactoryBean到SpringMVC中去
在Spring配置文件中(本项目的配置文件为application.xml),增加如下代码,让conversionService生效,<mvc:annotation-driven />
默认只是让处理器映射器、前端控制器、处理器适配器生效,如果想让conversionService生效,就必须在<mvc:annotation-driven />
中添加conversion-service="conversionService"
说明。
1 | <!--添加SpringMVC框架的注解支持 ,conversion-service="conversionService"为配置自定义转换器 --> |
做完以上三步后,即可让前端提交过来的格式为“yyyy-MM-dd HH:mm:ss”的字符串转换成Date日期类型了。
4、说在后面的话
这种自定义转换器只适用于一般的表单提交方式的转换,不适用于JSON格式提交的情况(如果是JSON提交需要单独讨论)。
下面的参数接受方式可以被转换。
1 | import org.springframework.stereotype.Controller; |
User对象的结构为:
1 | import java.io.Serializable; |
前端提交的表单结构为:
1 |
|