zoukankan      html  css  js  c++  java
  • Java 异常 Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date'

    查询时发送给服务器的日期的字符串格式:yyyy-MM-dd HH:mm:ss

    服务器接收到日期的字符串之后,向 MySQL 数据库发起查询时,因为没有指定日期时间格式,导致字符串数据不能正确地转换为日期而产生的错误:

    1 2019-12-05 17:43:55.215  WARN 1460 --- [nio-8080-exec-6] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors
    2 Field error in object 'billsVo' on field 'endTime': rejected value [2019-12-05 00:00:00]; codes [typeMismatch.billsVo.endTime,typeMismatch.endTime,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [billsVo.endTime,endTime]; arguments []; default message [endTime]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'endTime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.util.Date] for value '2019-12-05 00:00:00'; nested exception is java.lang.IllegalArgumentException]
    3 Field error in object 'billsVo' on field 'startTime': rejected value []; codes [typeMismatch.billsVo.startTime,typeMismatch.startTime,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [billsVo.startTime,startTime]; arguments []; default message [startTime]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'startTime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.util.Date] for value ''; nested exception is java.lang.IllegalArgumentException]]

    解决方法:在相应的属性上使用 @DateTimeFormat 注解,并指定格式,见第 14 或 16 行:

    复制代码
     1 import java.util.Date;
     2 
     3 import org.springframework.format.annotation.DateTimeFormat;
     4 
     5 import lombok.AllArgsConstructor;
     6 import lombok.Data;
     7 import lombok.NoArgsConstructor;
     8 
     9 @NoArgsConstructor // 无参构造方法
    10 @AllArgsConstructor // 有参构造方法
    11 @Data // Getters、Setters、toString() 等方法
    12 public class BillsVo {
    13 
    14     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    15     private Date startTime;
    16     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    17     private Date endTime;
    18 }
    复制代码

    顺便一说,如果要指定服务器端返回给客户端的日期的 JSON 格式:

    可以在相应的类的属性上使用 @JsonFormat 注解:

    1     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    2     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    3     private Date billtime;

    如果是 Spring Boot 项目,也可以在 application.yml 文件中指定:

    1 spring:
    2   jackson:
    3     date-format: yyyy-MM-dd HH:mm:ss
    4     time-zone: GMT+8

  • 相关阅读:
    Codeforces Round #333 (Div. 1)--B. Lipshitz Sequence 单调栈
    UVALive 7148 LRIP 14年上海区域赛K题 树分治
    UVAlive7141 BombX 14年上海区域赛D题 线段树+离散化
    VK Cup 2015
    Codeforces Round #326 (Div. 1)
    Codeforces Round #216 (Div. 2) E. Valera and Queries 树状数组 离线处理
    Codeforces Round #259 (Div. 2) D. Little Pony and Harmony Chest 状压DP
    Codeforces Round #263 (Div. 1) C. Appleman and a Sheet of Paper 树状数组暴力更新
    java连接mysql出现The server time zone value '�й���׼ʱ��' is unrecognized or represents more than...
    Java Date转Json报错解决方案
  • 原文地址:https://www.cnblogs.com/csjoz/p/15336751.html
Copyright © 2011-2022 走看看