【踩坑日常,已解决】Failed to convert from type [java.lang.String] to type [java.util.Date]

报错信息

[org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errorsField error in object ‘dailyTrainQueryReq’ on field ‘date’: rejected value [2025-01-15]; codes [typeMismatch.dailyTrainQueryReq.date,typeMismatch.date,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [dailyTrainQueryReq.date,date]; arguments []; default message [date]]; default message [Failed to convert property value of type ‘java.lang.String’ to required type ‘java.util.Date’ for property ‘date’; Failed to convert from type [java.lang.String] to type [java.util.Date] for value ‘2025-01-15’]]

问题场景

前端向后端查询的场景,get请求。传递日期参数时,前端传递的是字符串,后端接收Data类型。后端接收类代码如下:

@Data
public class DailyTrainQueryReq extends PageReq {

    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date date;

    private String code;
}

解决方法

在后端接收类上修改注解为@DateTimeFormat

@Data
public class DailyTrainQueryReq extends PageReq {

//    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date date;

    private String code;
}

@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")这个注解用于post请求,不适用于get请求。
修改之后问题解决!!

Logo

一站式 AI 云服务平台

更多推荐