Springmvc之类型转换器

Springmvc之类型转换器

一、概述

在我们写的程序中,表单提交的无论是 int 还是 double 类型的请求参数,用于处理该请求
的处理器方法的形参,均可直接接收到相应类型的相应数据,而非接收到 String 再手工转换。
那是因为在 SpringMVC 框架中,有默认的类型转换器。这些默认的类型转换器,可以将 String
类型的数据,自动转换为相应类型的数据。

但默认类型转换器并不是可以将用户提交的 String,转换为所有用户需要的类型。此时,
就需要自定义类型转换器了。 
  例如,在 SpringMVC 的默认类型转换器中,没有日期类型的转换器,因为日期的格式太
多。若要使表单中提交的日期字符串,被处理器方法形参直接接收为 java.util.Date,则需要

自定义类型转换器了。 

二、转换示例

(1)写index页面


(2)修改处理器类


(3)修改SpringMVC配置文件


(4)自定义类型转换器

若要定义类型转换器,则需要实现 Converter 接口。该 Converter 接口有两个泛型:第一
个为待转换的类型,第二个为目标类型。而该接口的方法 convert(),用于完成类型转换。


(5)对类型转换器的配置

 类型转换器定义完毕后,需要在 SpringMVC 的配置文件中对类型转换进行配置。首先要
注册类型转换器,然后再注册一个转换服务 Bean。将类型转换器注入给该转换服务 Bean。
最后由处理器适配器来使用该转换服务 Bean。 

1,注册类型转换器


2,创建转换服务Bean

对于类型转换器,并不是直接使用,而是通过转换服务 Bean 来调用类型转换器。而转
换服务 Bean 的创建,是由转换服务工厂 Bean -- ConversionServiceFactoryBean 完成。 
  该工厂 Bean 有一个 Set 集合属性 converters,用于指定该转换服务可以完成的转换,即
可以使用的转换器。从 Set 集合可知,各转换器间无先后顺序。 


3,使用转换服务Bean

转换服务 Bean 是由处理器适配器直接调用的。采用 mvc 的注解驱动注册方式,可以将

转换服务直接注入给处理器适配器。 


4,SpringMVC配置文件的总配置


三、数据回显

3.1 概述

        当数据类型转换发生异常后,需要返回到表单页面,让用户重新填写。但正常情况下, 发生类型转换异常,系统会自动跳转到 400 页面。所以,若要在发生类型转换异常后,跳转 到指定页面,则需要将异常捕获,然后通过异常处理器跳转到指定页面。  

        若仅仅是完成跳转,则使用系统定义好的 SimpleMappingExceptionResolver 就可以。但, 当页面返回到表单页面后,还需要将用户原来填写的数据显示出来,让用户更正填错的数据。 也就是还需要完成数据回显功能。此时就需要自定义异常处理器了。 

(1)类型转换异常为 TypeMismatchException。 

数据回显原理:在异常处理器中,通过 request.getParameter()将用户输入的表单原始数 据获取到后,直接放入到 ModelAndView 中的 Model 中,然后从要转向的页面中就可以直接 通过 EL 表达式读取出,也就实现了数据回显。 




(2)修改类型转换器


(3)修改表单页面


猜你喜欢

转载自blog.csdn.net/king_cannon_fodder/article/details/80200944