SpringMVC使用@RequestBody注解报400错误
原因:
- 采用GET请求方式而不是POST请求方式。
- 或者是传入的json字符串和对应封装的对象不对应,以及封装的接收对象中的字段类型有没有Date类型或者int等不是String类型。
解决方法:
方法一:将GET请求方式换成POST请求方式。
方法二:若有,则在set方法中统一将传入的参数调整为String类型。
private Date startTime; public Date getStartTime() { return startTime; } public void setStartTime(String startTime) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { this.startTime = dateFormat.parse(startTime); } catch (ParseException e) { this.startTime = null; } }
这样写就可以了,不要将形参的类型写成Date类型。
前台的ajax发送如下:
$.ajax({ type : "POST", contentType : "application/json", url : xxx,// 请求路径 data : JSON.stringify(data),// 将data转换为json字符串格式 success : function(result) { } });
后台接收:
@PostMapping("all") public ResultEntity fetchActive(@RequestBody ActiveReqVo reqVo){ return null; }
终于解决了