赞
踩
前端画面上有一个可以选择年月的日期选择器,代码如下:
- <el-form-item label="统计月份" prop="billsDate" v-if="isShowMonth">
- <el-date-picker clearable size="small"
- v-model="queryParams.billsDate"
- type="month"
- value-format="yyyy-MM"
- placeholder="请选择统计月份"
- :disabled="inputDisable">
- </el-date-picker>
- </el-form-item>
选择的数据使用post请求将数据传递给后端
后端接收的时候报如下错误
JSON parse error: Cannot deserialize value of type `java.util.Date` from String "2022-01":
后端接收的实体类如下
- /**
- * 客户ID
- */
- private Long companyId;
-
- /**
- * 客户code
- */
- private String companyCode;
-
- /**
- * 账单统计类型
- */
- private Integer billStatisticsType;
-
- /**
- * 账单时间
- */
- private Date billsDate;
因为传入的参数是 String 类型的,而用来接收参数的项目的属性是 java.util.Date 类型的,类型无法转换。
springboot默认采用jackson,而jackson只能识别以下几种日期格式
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"; "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; "yyyy-MM-dd"; "EEE, dd MMM yyyy HH:mm:ss zzz"; long类型的时间戳(毫秒时间戳)
所以在接收到数据的时候,需要通过jackson把数据转化。jackson转化默认的时间格式 'yyyy-MM-dd’T’HH:mm:ss.SSS’,所以就会出现异常,所以要设置时区的格式为"yyyy-MM"。
添加@JsonFormat注解,来说明接收格式
代码如下
- /**
- * 客户ID
- */
- private Long companyId;
-
- /**
- * 客户code
- */
- private String companyCode;
-
- /**
- * 账单统计类型
- */
- private Integer billStatisticsType;
-
- /**
- * 账单时间
- */
- @JsonFormat(pattern = "yyyy-MM")
- private Date billsDate;
参照博客:Cannot deserialize value of type `java.util.Date` from String_LLLLevi的博客-CSDN博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。