赞
踩
目录
3.1实体类用LocalDate类型来接收请求体中的日期数据。
废话少说:接收前端传来的时间参数的时候出现了时间反序列化异常。
前后端时间格式不一致,前端的时间格式只有日期信息,没有时间信息,而后端用了LocalDateTime类型。
- LocalDateTime类型不但包含了日期信息,而且还包含了时间信息。通常用来保存 "1921-7-23 10:20:59" 这种格式的数据。
- LocalDate类型只包含日期信息。通常用来保存 "1921-7-23" 这种格式的数据。
- Date类型也是包含了日期和时间信息,但是这种类型比较古老,在设计上存在一定缺陷,不推荐使用。
用postman模拟,前端传过来的数据格式是:
实体类:
- @Data
- public class BodyJsonTimeDto {
- private LocalDateTime time1;
- private LocalDateTime time2;
- private LocalDateTime time3;
- }
controller层:
- @RestController
- @RequestMapping("/time")
- public class TimeController {
- //接收请求体中json格式的时间
- @PostMapping("/bodyJsonTime")
- public BodyJsonTimeDto getBodyJsonTime(@RequestBody BodyJsonTimeDto time) {
- return time;
- }
- }
异常:反序列化时间失败
- @Data
- public class BodyJsonTimeDto {
- private LocalDate time1;
- private LocalDate time2;
- private LocalDate time3;
- }
前端传参:
后端实体类接收:
- @Data
- public class BodyFormTimeDto {
- @DateTimeFormat(pattern = "yyyy-MM-dd")//格式化前端的日期数据
- private LocalDate time4;
- @DateTimeFormat(pattern = "yyyy-MM-dd")//格式化前端的日期数据
- private LocalDate time5;
- }
后端controller
方式一:
- @RestController
- @RequestMapping("/time")
- public class TimeController {
- //接收请求体中form表单格式的时间,实体类收参
- @PostMapping("/bodyFormTime")
- public BodyFormTimeDto getBodyFormTime(BodyFormTimeDto time){ //注意这里不加@RequestBody注解,这里接收的是form表单数据
- return time;
- }
- }
方式二:
- @RestController
- @RequestMapping("/time")
- public class TimeController {
- //接收请求体中form表单格式的时间,零散收参
- @PostMapping("/bodyFormTime")
- public void getBodyFormTime(@DateTimeFormat(pattern = "yyyy-MM-dd")LocalDate time4,
- @DateTimeFormat(pattern = "yyyy-MM-dd")LocalDate time5){
- System.out.println("time4 = " + time4);
- System.out.println("time5 = " + time5);
- }
- }
一定要与前端约定好日期时间数据的格式。
"1949-10-01"只包含日期信息,后端用LocalDate类型接收
"1949-10-01 10:20:37"包含了日期和时间信息,后端用LocalDateTime类型接收
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。