SpringMVC中日期格式的转换

解决日期提交转换异常的问题

由于日期数据有很多种格式,所以springmvc没办法把字符串转换成日期类型。所以需要自定义参数绑定。前端控制器接收到请求后,找到注解形式的处理器适配器,对RequestMapping标记的方法进行适配,并对方法中的形参进行参数绑定。在springmvc这可以在处理器适配器上自定义Converter进行参数绑定。如果使用<mvc:annotation-driven/>可以在此标签上进行扩展。

  1.自定义DataConvertor类, 并实现Convertor接口

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配置文件中注册转换器

  方法一:通过注解驱动的方式加载转换器

<!-- 配置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配置(不常用)

<?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/>

原文地址:https://www.cnblogs.com/rodge-run/p/6545299.html