文档章节

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

 你的快递
发布于 2016/05/06 11:02
字数 329
阅读 137
收藏 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
Springmvc+mybatis+restful+bootstrap框架整合

Spring MVC工作流程图 图一 图二 Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获; 2. DispatcherServlet对请求URL进行解析,得到请求资...

qq59410a0b9a625
2018/06/27
0
0
自定义jackson解析时间格式yyy-MM-dd HH:mm:ss

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

落叶清风
2018/08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

tac 与cat

tac从后往前看文件,结合grep使用

writeademo
28分钟前
2
0
表单中readonly和dsabled的区别

这两种写法都会使显示出来的文本框不能输入文字, 但disabled会使文本框变灰,而且通过通过表单提交时,获取不到文本框中的value值(如果有的话), 而readonly只是使文本框不能输入,外观没...

少年已不再年少
49分钟前
2
0
SpringBoot上传图片操作

首先有个上传文件的工具类 /** * 文件上传 * @param file * @param filePath * @param fileName * @throws Exception */public static void uploadFile(byte[] file, String ...

_liucui_
今天
6
0
DrawerLayout

public class MainActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener,OnFragmentInteractionListener{ public NavigationView navView; ......

安卓工程师王恒
今天
1
0
python精简笔记

python精简笔记-字符串基本用法 字符串常见用法: * encode() # 编码成bytes类型 * find() # 查找子串 * index() # 获取下标 * replace() # 替换子串 * len(string) # 返回字符串长度,...

平头哥-Enjoystudy
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部