网站首页 > 知识剖析 正文
问题描述
前端使用dayjs进行日期格式化,后端java SpringBoot应用采用Jackson库的@JsonFormat标注进行字符串到日期类型的自动转换,但是调用时却提示如下错误:
"Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'beginDate'; Failed to convert from type [java.lang.String] to type [@com.fasterxml.jackson.annotation.JsonFormat java.util.Date] for value [2023-01-01 00:00:00]"
根因定位
@JsonFormat注解时需要先通过@RequestBody将入参参数映射到实体后,@JsonFormat注解才能去对时间格式进行约束,因为RequestBody注解主要针对Post请求,所以对Get请求无效,所以如果请求是Get请求,那么必然会出现上述错误。
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的),所以只能发送POST请求。
GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。
解决方案
方案1:将请求改为Post请求,在Controller方法上增加@RequestBody处理
方案2:在Java对象的属性上使用SpringBoot的另外一个标签@DateTimeFormat
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date beginDate;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date endDate;
猜你喜欢
- 2024-12-07 (建议收藏) | 企业中Vue.js最常用的第三方插件
- 2024-12-07 前端基础:JavaScript
- 2024-12-07 七爪源码:如何在 JavaScript 中从日期中减去 6 个月
- 2024-12-07 如何在 JavaScript 中按日期对对象数组进行排序
- 2024-12-07 JS Date对象的妙用:如何更优雅的计算时间差?
- 2024-12-07 在js中常见的时间格式及其转换
- 2024-12-07 Web前端最强JavaScript Excel处理插件——exceljs
- 2024-12-07 js获取时间戳的几种方式
- 2024-12-07 Axure高保真教程:日期时间下拉列表
- 2024-12-07 JavaScript获取现在时间日期与农历
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)