Spring boot 项目中put提交Date数据时出现type=Bad Request, status=400状态码

1.问题原因

 经过测试发现,当客户端页面提交日期为空时会出现以下异常,如果提交日期不为空则不会出现上述问题。出现这种错误的原因是没有对代码中的Date型参数进行格式化,接收为null的日期类型参数时,出现了转换异常。一般是页面的数据与数据库的Date数据类型不同导致的。

2.解决办法

  为后台用于接收日期类型并存入数据库的属性进行日期的格式化。

1、为该属性加上格式化注解:@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)(数据库中的日期格式)

如果接收日期的为实体类属性则直接在该属性上加,如果为方法参数直接加在方法参数前。

2、使用日期类型转换器,定义一个日期类型转换器将他交给spring容器管理,在转换时会自动调用。使用时实现Converter接口接口中泛型第一个参数为源类型第二个参数为目标类型。

@Component
public class StringToDateConvert implements Converter<String, Date> {
   // 日期转换器
   private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
   @Override
   public Date convert(String s) {
       Date date = null;
       try {
          if(s!=null && !"".equals(s)){
              date = format.parse(s);
          }
       } catch (ParseException e) {
           e.printStackTrace();
      }
       return date;
   }
}
posted @   我也有梦想呀  阅读(736)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示