@RequestBody注解Ajax post json List集合数据请求400/415问题

该问题出现在ajax发送post请求时返回错误代码,后台不报任何错误

问题原因和解决方法:

1.post发送的json数据错误

@RequestBody注解是把post请求的整体数据进行处理,@RequestBody后面的参数是和json数据没有关系的,比如

@RequestBody List<CourseVo> courseVos;
//此句的courseVos不用在json数据中包含!!!!!

发送该数据的js为下

$.ajax({
     type: "post",
     url: '/beansOffice/addCourseData',
     dataType:"json",
     contentType:"application/json",
     data: JSON.stringify(this.courseView),//此块注意

     //注意数据是data: JSON.stringify(this.courseView)   
     //而不是data: JSON.stringify({courseVos:this.courseView})
     //两者区别就是有没有把@RequestBody注解后的“courseVos”当为json数据

     success: function (data) {
        if (data.status == 200 && data.body.code == 200)
              alert("提交成功!");
     }
});

2.Spring或maven版本过低导致jackson包没有导入

jackson是spring默认的json处理工具,没有该包则会对一些复杂对象会处理异常
依赖包为下(当前最新):

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.8</version>
</dependency>

3.json数据和对象数据转换出问题

这个问题很容易出,由于异常被吃掉很不容易发现
      比如对象中定义数据 int a;但是你有可能默认值是“”,即空字符串,则也会直接报400错误而后台没有任何异常
     还有一些比如时间类型(data)、布尔(boolean)或自定义类型,建议所有都使用String,自己手动在后台转换,这样报错也会被发现

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@RequestBody 是Spring框架中用来接收HTTP请求请求体的注解。根据引用的代码片段,@RequestBody注解应用在testPostRequest方法的参数上,用于接收名为msg的AppMsg对象。但是根据引用中的异常信息,后端接口在处理请求时抛出了HttpMessageNotReadableException异常,错误信息为"Required request body is missing",即请求体缺失。 这个问题可能是由于前端发送的请求没有包含请求数据导致的。要拿到JSON数据,前端需要在请求中包含JSON格式的数据,并将其作为请求体发送给后端。可以使用工具如Postman或通过前端的Ajax请求来发送包含请求体的请求。 如果你已经确保请求中包含了正确的请求数据,但仍然无法拿到JSON数据,可以尝试在接收参数上添加@JsonProperty注解,如引用所示。这个注解可以指明JSON数据中的属性名与接收参数的映射关系。 总结起来,要拿到JSON数据,你需要确保请求中包含正确的请求数据,并将其作为请求体发送给后端。如果仍然无法拿到数据,可以尝试添加@JsonProperty注解来指定参数与JSON属性的映射关系。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [@RequestBody 接收不到JSON格式请求数据](https://blog.csdn.net/zhoudirui/article/details/107529085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【无标题】解决springBoot采用@Requestbody无法接收前端json数据且出现Required request body is missing的...](https://blog.csdn.net/qq_51364098/article/details/123693299)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [springboot post请求 使用@RequestBody接收不到json数据](https://blog.csdn.net/qq_45644484/article/details/116591894)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值