https://www.cnblogs.com/clamp7724/p/11703406.html

在这个基础上修改的

spring中设置了自动的类型转换,可以把前台数据自动进行类型转换传给后台,不过有些特殊情况可能需要自己定义类型转换

比如前台传回String 2019/10/21  后台是可以自动转化为 Date 的

但是如果是 2019-10-21 就会报错

这时候就需要自定义类型转换并加到spring中。

reference: https://www.bilibili.com/video/av50213945/?p=14

第一步:定义一个类,实现Converter接口,该接口有两个泛型。

第二步:

在springmvc.xml (springmvc的配置文件,在resources下面)里的beans里添加新的bean

<!-- 配置类型转换器工厂 添加新的类型转换-->
    <bean id="converterService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <!-- 给工厂注入一个新的类型转换器 -->
        <property name="converters">
            <array> <!-- 配置自定义类型转换器 这里class是自己写的转换类的完整名字(路径+名字)-->
                <bean class="hello_word.method.MyStringToDate"></bean>
            </array>
        </property>
    </bean>

第三步:在annotation-driven标签中引用配置的类型转换服务

<mvc:annotation-driven conversion-service="converterService"></mvc:annotation-driven>

修改后整个springmvc的代码:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">

<!-- 配置spring创建容器时要扫描的包 -->
<context:component-scan base-package="hello_word"></context:component-scan>

<!-- 配置视图解析器,  决定controller对应的显示页面去哪找-->
<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/pages/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>
<!-- 配置spring开启注解mvc的支持-->
<mvc:annotation-driven conversion-service="converterService"></mvc:annotation-driven>

    <!-- 配置类型转换器工厂 添加新的类型转换-->
    <bean id="converterService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <!-- 给工厂注入一个新的类型转换器 -->
        <property name="converters">
            <array> <!-- 配置自定义类型转换器,这里class是自己写的转换类的完整名字(路径+名字) -->
                <bean class="hello_word.method.MyStringToDate"></bean>
            </array>
        </property>
    </bean>
</beans>

修改java代码和jsp用于测试

user 添加 Date birthday属性,添加get,set,修改toString

前台表单添加

用户生日(yyyy-mm-dd):<input type="text" name = 'user.birthday'><br/>

测试结果:

01-21 01:57