搜索
简帛阁>技术文章>Spring boot 项目中post 提交Date数据时出现type=Bad Request, status=400状态码

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

1、问题描述

在一次项目的某个页面中遇到了,当客户端提交数据时出现(type=Bad Request, status=400)返回400状态码,控制台出现 WARN .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors。

客户端<a href='http://jianboge.com/dtag/浏览器'>浏览器</a>
服务器控制台

2、问题原因

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

3、解决方法

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

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;
   }
}
1、问题描述在一次项目的某个页面遇到了,当客户端提交数据出现(typeBadRequest,status400)返回400状态,控制台出现WARNwsmsDefaultHandlerExcep
使用Nginx+Django+UWSGI部署机器,一直出现DebuggingApache/Django/WSGIBadBadRequest(400)错误最后发现问题是Django的settings配
最近angularjspost到后台400一头雾水没有任何错误。最后发现好文,感谢作者SpringMVC出现400BadRequest错误(用@ResponseBody处理ajax传过来的json数
今天与同事调试一个接口,发现后台使用@RequestBody老是获取不到数据。查了网上很多资料,要使用@RequestBody来转换JSON字符串为对象,大概是以下几个点:1请求的ContentTyp
我的代码部署在Linux测试环境,我在使用HttpClient发送http请求遇到问题,请求报400Badrequest。网上都在说下面这两个原因。400是HTTP的状态之一,主要有两种形式:1、
一springmvc项目我新增记录完全ok,编辑就是不行,后台方法进不去。老是报错HTTPERROR400BadRequest。经过查询,说是400表示请求中的语法错误。我把新增记录的请求信息拷贝
最近有一个需要从拦截器获取post请求的参数的需求,这里记录一下处理过程出现的问题。首先想到的就是requestgetParameter(String)方法,但是这个方法只能在get请求中取到参
在ajax请求后台数据时有时会报HTTP400错误请求无效(Badrequest);出现这个请求无效报错说明请求没有进入到后台服务里;原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一
在ajax请求后台数据时有时会报HTTP400错误请求无效(Badrequest);出现这个请求无效报错说明请求没有进入到后台服务里;原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一
主要有两步,controller添加initBinder方法,再创建一个时间类型数据转换类就OK了。1、在Controller创建方法://相关包importjavatextDateFormat