Spring MVC接收日期字符串在后台转换为日期类型:

使用"注解进行局部转换":

  • 使用单个参数,接收时间格式数据时,由于前台回传的是一个字符串,在后端要转换为Date格式,Spring MVC提供了@DateTimeFormat注解帮助我们转换,注解里pattern要严格按照前台输入的格式,比如前台输入了2000-11-09这样的格式,pattern里就要写成yyyy-MM-dd:
 @DateTimeFormat(pattern = "yyyy-MM-dd") Date time
  • 使用实体类接收对象,是一样的

使用“转换器接口”对格式进行转换;

这种转换器是对全局都生效的,整个项目中需要转换的地方都会依据这个。

首先创建自己的转换器类,实现Converter<String,Date>接口,并重写convert方法:

在applicationContext中配置,首先配置一个bean,如图,set中的bean为自己创建的转换器类:

<context:component-scan base-package="top.xiongmingcai.springmvc"/>
<!--启用spring mvc注解开发模式-->
<mvc:annotation-driven conversion-service="conversionService"/>
<!--将图片/js/css等静态资源排除在外,提高执行效率-->
<mvc:default-servlet-handler/>

<bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean" id="conversionService">
    <property name="converters">
        <set>
            <bean class="top.xiongmingcai.springmvc.converter.MtDateConverter"/>
        </set>
    </property>
</bean>

将转化器类和Spring MVC 绑定

https://github.com/MingCaiXiong/spring-learn/commit/9fc2cf48e29bc940beef67a16ff52a738bfb45e9

如果,同时配置了“时间转换器类”和“时间格式注解”输出时以哪个格式为准呢?

Spring MVC 中优先以“时间转换器类”设定的格式进行输出,自动忽略掉“时间格式注解”

引申问题:

因为“时间转换器接口”方式进行时间数据接收时,代码时写死在程序中的,如果应对不同场景的需要呢?(2019-12-12 / 20191212)

解决: 因为前段传来的数据时已字符串的形式存在的,此时我们在后端代码中对字符串的长度进行判断,

如果长度为“10”则返回“2019-12-12”格式时间。

如果字符串长度为“8”且 全为数字 则返回“20191212”格式的时间