由于日期数据有很多种格式,所以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