文档章节

Spring mvc 日期转换 支持多种格式

 你的快递
发布于 2016/05/06 11:02
字数 329
阅读 129
收藏 0

需要maven, spring 版本 4.2.5.RELEASE

<dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.4</version>
</dependency>
<dependency>
      <groupId>com.fasterxml.jackson.jaxrs</groupId>
      <artifactId>jackson-jaxrs-base</artifactId>
      <version>2.7.3</version>
</dependency>

mvc 数据绑定, 从字符串Date

import java.text.ParseException;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.core.convert.converter.Converter;

public final class StringToDate implements Converter<String, Date>{
    private final Set<String> patterns;
    
    public StringToDate(){
        patterns = new HashSet<>();
        patterns.add("yyyy-MM-dd HH:mm:ss");
    }
    @Override
    public Date convert(String source) {
        if(StringUtils.isBlank(source))
            return null;
        Date parseDate = null;
        try {
            parseDate = DateUtils.parseDate(source, patterns.toArray(new String[]{}));
        } catch (ParseException e) {
            throw new IllegalArgumentException(e.getCause());
        }

        return parseDate;
    }
    /**
     * 自定义转换 默认有
     * {@code yyyy-MM-dd HH:mm:ss}
     * @param patterns
     */
    public void setPatterns(Collection<String> patterns) {
        this.patterns.addAll(patterns);
    }
    
}

spring mvc 配置文件

<mvc:annotation-driven conversion-service="conversionService">
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"
                          p:indentOutput="true"
                          p:simpleDateFormat="yyyy-MM-dd HH:mm:ss">
                     </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
    <!-- 类型转换 -->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.xx.support.StringToDate">
                    <property name="patterns">
                        <set>
                            <value><![CDATA[yyyy/MM/dd HH:mm:ss]]></value>
                        </set>
                    </property>
                </bean>
            </set>
        </property>
    </bean>

附:额外未完成工作

    想使用jackson  json to Object, 日期也支持多种格式匹配

import java.io.IOException;
import java.text.ParseException;
import java.util.Date;

import org.apache.commons.lang3.time.DateUtils;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

public class JsonDateDeserialize extends JsonDeserializer<Date> {
    private String[] patterns = {"yyyy-MM-dd HH:mm:ss","yyyy/MM/dd HH:m:ss"};

    public Date deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
        String dateAsString = jp.getText();
        Date parseDate = null;
        try {
            parseDate = DateUtils.parseDate(dateAsString, patterns);
        } catch (ParseException e) {
            throw new IllegalArgumentException(e.getCause());
        }

        return parseDate;
    }
}

发现需要获得 ObjectMapper

ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addDeserializer(Date.class, new JsonDateDeserialize ());
mapper.registerModule(module);


© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 3
码字总数 581
作品 0
私信 提问
Spring MVC 实践 - Component

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hanqing280441589/article/details/51831979 标签 : Java与Web Converter Spring MVC的数据绑定并非没有任何...

菜鸟-翡青
2016/07/05
0
0
Spring MVC返回json字符串时数据格式化

在运用Spring MVC框架开发时,可以直接在方法上添加注解 @ResponseBody 返回JSON数据,如果javabean的属性中包含Date日期类型的数据,默认的转换格式并不是我们想要的 yyyy-MM-dd 这样的格式...

云颖
2014/01/22
0
0
Spring 官方文档第十六章笔记(1):SpringMVC简介

Spring Reference第十六章笔记(1)Introduction to Spring Web MVC framework Spring MVC的核心是DispatcherServlet。DispatcherServlet根据配置文件的配置将请求分发给各个 Controller 。 ...

LiJIaming
2012/05/31
0
0
自定义jackson解析时间格式yyy-MM-dd HH:mm:ss

1、问题排查 出现的场景: 服务端通过springmvc写了一个对外的接口,返回一个json字符串,其中该json带有日期,格式为yyyy-MM-dd HH:mm:ss 客户端通过feign调用该http接口,指定返回值为一个...

落叶清风
08/08
0
0
Spring Boot中如何扩展XML请求和响应的支持

在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理。那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式返回一个对象...

翟永超
09/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

腾讯与Github的魔幻会面背后的故事…

10月22日,腾讯开源管理办公室有幸邀请到Github新晋CEO Nat Friedman,前来鹅厂参观交流。目前腾讯已经有近70个项目在Github上开源,共获得17w stars,世界排名11位。Github是腾讯开源的主阵...

腾讯开源
19分钟前
0
0
单例模式

单例模式(Singleton pattern)属于创建型设计模式。 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对...

NinjaFrog
24分钟前
0
0
TypeScript基础入门之装饰器(三)

转载 TypeScript基础入门之装饰器(三) 继续上篇文章[TypeScript基础入门之装饰器(二)] 访问器装饰器 Accessor Decorator在访问器声明之前声明。 访问器装饰器应用于访问器的属性描述符,可用...

durban
41分钟前
2
0
spring5调研学习(转载)

Spring框架的新功能 这一章主要提供Spring框架新的功能和变更。 升级到新版本的框架可以参考。Spring git。 内容列表 Spring 5.x框架新的功能 Spring 4.x框架新的功能 Spring 3.x框架新的功能...

小海bug
51分钟前
2
0
为何Spring框架能这么流行?

想要学习更多关于Spring框架在Java开发者中如此流行?看这篇文章可以学到更多! Spring框架特性 Spring是用于应用开发中的一款强大,轻量级框架。更广泛地说,你可以认为Spring框架是一个定义...

java知识分子
54分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部