由于日期数据有很多种格式,所以springmvc没办法把字符串转换成日期类型。所以需要自定义参数绑定。(这只是其中一种应用情况)
前端控制器接收到请求后,找到注解形式的处理器适配器,对RequestMapping标记的方法进行适配,并对方法中的形参进行参数绑定。
在springmvc这可以在处理器适配器上自定义Converter进行参数绑定。如果使用<mvc:annotation-driven/ >可以在此标签上进行扩展。
自定义时间转换器,自定义的转换器需要实现Converters接口,并指定泛型<S,T> S代表的是源类型,T代表的是目标类型。
具体绑定实现代码如下:
定义Converter类
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
try {
//将日期串转成日期类型(格式是yyyy-MM-dd HH:mm:ss)
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return simpleDateFormat.parse(source);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
配置时间转换器,在springmvc.xml中配置时间转换器,并在mvc注册驱动中声明该转换器
<mvc:annotation-driven conversion-service="conversionService">
</mvc:annotation-driven>
<!-- conversionService -->
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<!-- 转换器 -->
<property name="converters">
<list>
<bean class="com.yan.controller.converter.DateConverter"/>
</list>
</property>
</bean>
最终就能实现绑定了,当然日期问题一般情况下用插件就行,没必要用这个。但是这个知识点很有意思,有没有~~