如何解决POST方法给@RequestBody传参数失败的问题(@requestbody,post,开发技术)

时间:2024-05-03 11:37:27 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

POST方法给@RequestBody传参数失败

通过ajax给springMVC传递参数时,通过post方法传递json字符串时常用的方式,这时后端应该通过@RequestBody注解配合springMVC中配置的消息转换器来进行json字符串的解析。

因为post方法中的json字符串通常是一个前端的json对象转化而成的字符串,所以后端@RequestBody后面可以使用HashMap<String,Object>类型来接收所有参数。

通过这种方式可以非显式的传送大量的参数到后端,并且和具体参数无关,便于以后对参数进行扩展,对于不确定参数的场合,这种方式解除了与具体参数的耦合。但是由于简单的过程实际上经历了许多SpringMVC的操作,所以经常会遇到各种奇怪问题。

其中post方法请求体中的json字符串无法成功通过SpringMVC中配置的MessageConverter(一般是MappingJackson2HttpMessageConverter)转换为@RequestBody注解的HashMap对象,是可以见到的问题。

这个时候你可以检查下ajax请求的content-type请求头,因为在配置MessageConverter消息转换器的时候,需要配置其所检查的请求体类型(content-type),默认情况下浏览器的ajax会添加content-type:application/x-www-form-urlencoded的请求头,但是有的浏览器或者有些时候会发送content-type:application/x-www-form-urlencoded;charset:utf-8到后端,导致MappingJackson2HttpMessageConverter漏过对它的检查,这个时候SpringMVC会使用其他的MessageConverter来解析request body中的内容,这样肯定是会解析失败的。

如果遇到这种情况,比较好的解决方式,可能是在ajax的post请求中强制注明 contentType:application/json,并将application/json 和application/json;charset=utf-8两种MediaType(MimeType)添加到MappingJackson2HttpMessageConverter对象的检查列表中。

这样就可以保证post方法的请求体中的json字符串被MappingJackson2HttpMessageConverter对象检查并解析。

@RequestBody参数映射不上,@RequestBody报错

最近代码遇见了一个springmvc中的小问题,算是很基础的东西,同事问我后我有有些迷惑上网找了一些资料后弄清楚了。特此记录一下springmvc注解@requestbody来传递参数映射一个对象。

如何解决POST方法给@RequestBody传参数失败的问题

言归正传问题是这样的

使用postMan 发送httppost 请求:

如何解决POST方法给@RequestBody传参数失败的问题

最后报错。

报错原因

在使用postMan发送post请求的时候没有选择如下:

如何解决POST方法给@RequestBody传参数失败的问题

也就是下面说的需要注意的地方需要注意的地方是:

1.前端做保存操作的时候提交了很多参数过来,前端代码提交的时候content-type改成application/json,后台也配置了一个针对spring4的son类型的httpmessageConverter,

@RequsetBody 绑定的数据类型 :

一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。

GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。

1,使用@RequestBody 前后端参数要匹配个数不能少。字段名字要一样

2,检查配置文件spring的版本。对应的 spring4 的版本的适配器 对应的:

请用org.springframework.http.converter.json.MappingJacksonHttp2MessageConverter ,选择的这种配置用的是jackson2.X版本的,用来解析json数据。

如何解决POST方法给@RequestBody传参数失败的问题

spring 3.x的对应的版本:

org.springframework.http.converter.json.MappingJacksonHttpMessageConverter

这种配置用的是jackson1.X版本的

3,必须要在请求头中声明数据的类型Content-Type,

4,前端json数据和后端json数据 首字母不要大写,首字母大写映射不上,以驼峰格式命名。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:如何解决POST方法给@RequestBody传参数失败的问题的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:python函数的返回值是什么下一篇:

19 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18