Spring MVC日期时间格式解决
前言
spring MVC并没有给出事件类型的解决方法,需要程序员自己配置。
参数绑定原理回顾
首先了解一下参数绑定的原理:HandlerAdapter会首先把请求参数拿到Spring MVC内置的各种类型转换器对参数进行转换,将String转换成绑定的参数类型,注意名字要对应(但是时间类型需要自己解决)
日期时间件类型设计原则及流程
原则:
- 不让用户自由输入
流程:
- 实现converter包下的Converter接口
- 导入日期时间类型响应的包(建议JDK1.8以上使用LocalDateTime,老的Date很多方法已被弃用)
- 先判断填入的信息是否为空,不为空才执行转换。
1 | if(date!=null || !"".equals(date)){ |
2 | ...... |
3 | } |
- 指定转换格式,用trycatch包裹起来
源码参考
1 | @Configuration |
2 | public class MappingConverterAdapter { |
3 | /*** |
4 | * 日期参数接收转换器,将json字符串转为日期类型 |
5 | * @return |
6 | */ |
7 | @Bean |
8 | public Converter<String, LocalDateTime> LocalDateTimeConvert() { |
9 | return new Converter<String, LocalDateTime>() { |
10 | @Override |
11 | public LocalDateTime convert(String source) { |
12 | |
13 | DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
14 | LocalDateTime date = null; |
15 | try { |
16 | date = LocalDateTime.parse((String) source,df); |
17 | } catch (Exception e) { |
18 | e.printStackTrace(); |
19 | } |
20 | return date; |
21 | } |
22 | }; |
23 | } |
装配转换器
1 | |
2 |