由于日期数据有很多种格式,所以springmvc没办法把字符串转换成日期类型。所以需要自定义参数绑定。前端控制器接收到请求后,找到注解形式的处理器适配器,对RequestMapping标记的方法进行适配,并对方法中的形参进行参数绑定。在springmvc这可以在处理器适配器上自定义Converter进行参数绑定。如果使用<mvc:annotation-driven/>可以在此标签上进行扩展。
1.自定义DataConvertor类, 并实现Convertor接口
1
2
3
4
5
6
7
8
9
10
11
12
|
public class DateConverter implements Converter<String, Date> { @Override public Date convert(String source) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); try { return simpleDateFormat.parse(source); } catch (ParseException e) { e.printStackTrace(); } return null ; } } |
2.在springmvc.xml配置文件中注册转换器
方法一:通过注解驱动的方式加载转换器
1
2
3
4
5
6
7
8
9
10
|
<!-- 配置mvc注解驱动 --> < mvc:annotation-driven conversion-service = "conversionService" /> <!-- 配置日期转换器 --> < bean id = "conversionService" class = "org.springframework.format.support.FormattingConversionServiceFactoryBean" > < property name = "converters" > < set > < bean class = "cn.rodge.ssm.converter.DateConverter" ></ bean > </ set > </ property > </ bean > |
方法二:通过自定义webBinder配置(不常用)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<? xml version = "1.0" encoding = "UTF-8" ?> < beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:p = "http://www.springframework.org/schema/p" xmlns:context = "http://www.springframework.org/schema/context" xmlns:dubbo = "http://code.alibabatech.com/schema/dubbo" xmlns:mvc = "http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <!-- 扫描带Controller注解的类 --> < context:component-scan base-package = "cn.itcast.springmvc.controller" /> <!-- 转换器配置 --> < bean id = "conversionService" class = "org.springframework.format.support.FormattingConversionServiceFactoryBean" > < property name = "converters" > < set > < bean class = "cn.itcast.springmvc.convert.DateConverter" /> </ set > </ property > </ bean > <!-- 自定义webBinder --> < bean id = "customBinder" class = "org.springframework.web.bind.support.ConfigurableWebBindingInitializer" > < property name = "conversionService" ref = "conversionService" /> </ bean > <!--注解适配器 --> < bean class = "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" > < property name = "webBindingInitializer" ref = "customBinder" ></ property > </ bean > <!-- 注解处理器映射器 --> < bean class = "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /> <!-- 加载注解驱动 --> <!-- <mvc:annotation-driven/> --> <!-- 视图解析器 --> < bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" > < property name = "viewClass" value = "org.springframework.web.servlet.view.JstlView" /> <!-- jsp前缀 --> < property name = "prefix" value = "/WEB-INF/jsp/" /> <!-- jsp后缀 --> < property name = "suffix" value = ".jsp" /> </ bean > </ beans > |
注意:此方法需要独立配置处理器映射器、适配器,不再使用<mvc:annotation-driven/>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持服务器之家!
原文链接:http://www.cnblogs.com/rodge-run/p/6545299.html