我的编程空间,编程开发者的网络收藏夹
学习永远不晚

POST方法给@RequestBody传参数失败的解决及原因分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

POST方法给@RequestBody传参数失败的解决及原因分析

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来传递参数映射一个对象。

言归正传问题是这样的

使用postMan 发送httppost 请求:

最后报错。

报错原因

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

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

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数据。

spring 3.x的对应的版本:


org.springframework.http.converter.json.MappingJacksonHttpMessageConverter 

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

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

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

POST方法给@RequestBody传参数失败的解决及原因分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Discuz通信失败的原因分析及解决方法

《Discuz通信失败的原因分析及解决方法》Discuz作为一个知名的开源论坛系统,在网站建设中被广泛应用。然而,有时候在使用Discuz时会出现通信失败的情况,导致网站无法正常运行。本文将从通信失败的原因分析入手,并提供一些解决方法,同
Discuz通信失败的原因分析及解决方法
2024-03-10

分析Git认证失败的原因及解决办法

前言Git是目前最主流的代码管理和版本控制工具之一,在企业和开源社区广泛使用。在使用 Git 进行代码管理时,可能会遇到 Git 认证失败的问题。本文将分析Git认证失败的原因及可能的解决方法。一、Git认证失败的原因1.凭证缓存失效在使用
2023-10-22

Discuz登录失败的原因分析与解决方法

Discuz登录失败的原因分析与解决方法在使用Discuz论坛系统时,有时会遇到登录失败的情况,这可能会给用户带来困扰。本文将对Discuz登录失败的原因进行分析,并提供解决方法,同时给出具体的代码示例,帮助读者更好地应对这一问题。一、
Discuz登录失败的原因分析与解决方法
2024-03-09

java安装失败的原因及解决方法

解决方法:1、下载的JDK环境,必须与自己的操作系统相对应。32位操作系统下载32位的Windows JDK环境,64位操作系统下载64位的Windows JDK环境。2、安装JDK环境时,会有两次路径选择,可以默认不改,如果自定义路径的话,前一个JDK的路径
java安装失败的原因及解决方法
2018-07-02

linux域名解析失败的原因及解决方法是什么

Linux域名解析失败的原因可能有多种,常见的原因包括:DNS服务器故障:如果DNS服务器发生故障,可能导致域名解析失败。解决方法是检查DNS服务器的运行状态,确保它正常工作。DNS配置错误:如果在Linux系统的配置文件中指定的DNS服务
2023-10-25

SQL SERVER数据转换失败的原因及解决方法

目录SQL SERVER 转换失败原因分析解决方法错误处理示例代码:处理CSV文件导入到SQL Server中的数据转换失败问题示例代码:电子商务网站商品推荐功能结论SQL SERVER 转换失败在使用 SQL Server 数据库过程中
SQL SERVER数据转换失败的原因及解决方法
2024-09-22

Discuz验证失败的原因分析与解决方案

Discuz验证失败的原因分析与解决方案在Discuz使用过程中,用户可能会遇到各种验证失败的问题,如登录失败、权限不足等。本文将针对这些问题进行分析,并提出解决方案,同时给出具体的代码示例帮助读者更好地解决这些问题。一、验证码验证失败
Discuz验证失败的原因分析与解决方案
2024-03-11

win7系统安装失败的原因及解决方法

很多用户在安装Win7时都遇到了安装失败,到底是什么原因导致win7安装js失败,用户该如何去排除win7安装失败的故障,让Win7顺利安装,下面是笔者对Win7安装失败进行一次全面解析,希望能够找到您Win 7安装失败的原因。猜你喜欢:U
2023-05-31

阿里云网络服务器搭建失败原因分析及解决方法

阿里云网络服务器搭建过程中,如果遇到失败的情况,可能会让人感到困扰。本文将分析阿里云网络服务器搭建失败的常见原因,并提供相应的解决方法。一、常见原因及解决方法网络问题阿里云网络服务器搭建过程中,网络问题是最常见的问题之一。可能是网络线路问题,也可能是网络设置问题。解决方法如下:检查网络线路是否正常,如果线路有问题
阿里云网络服务器搭建失败原因分析及解决方法
2023-11-20

阿里云服务器发送邮件失败原因分析及解决方法

本文主要针对阿里云服务器发送邮件失败的问题进行深入分析,并提出相应的解决方法。邮件发送是很多企业日常运营的重要环节,而阿里云服务器作为企业级云服务提供商,其稳定性和可靠性备受企业关注。然而,由于各种原因,阿里云服务器可能会出现发送邮件失败的情况。本文将从阿里云服务器的邮件服务、邮件客户端设置、网络环境等方面进行深
阿里云服务器发送邮件失败原因分析及解决方法
2023-12-10

mysql_query()函数执行失败的原因及解决方法是什么

mysql_query()函数执行失败的原因和解决方法可能有以下几种:1. 连接数据库失败:如果连接数据库失败,可以检查数据库服务器是否正常运行,数据库连接参数是否正确,以及防火墙是否阻止了数据库连接。2. SQL语句错误:如果SQL语句有
2023-08-08

windows更新失败的原因及解决方法是什么

Windows更新失败的原因有很多,其中一些常见的原因包括:1. 网络问题:如果网络连接不稳定或中断,则Windows更新可能失败。解决方法是检查网络连接,确保稳定并重新尝试更新。2. 存储空间不足:如果计算机的硬盘空间不足,则无法成功完成
2023-09-08

win10重置失败的原因及解决方法是什么

Win10重置失败的原因及解决方法可能有多种。以下是一些常见的原因和解决方法:1. 系统文件损坏:重置过程中可能会遇到文件损坏或缺失的情况,导致重置失败。解决方法可以尝试运行系统文件检查工具sfc /scannow修复损坏的文件。2. 第三
2023-10-10

阿里云数据库链接失败原因及解决方法

本文将详细阐述阿里云数据库链接不上问题的原因及解决方法,帮助读者解决实际操作中遇到的问题。阿里云数据库链接不上可能由多种原因导致,包括但不限于:数据库服务器宕机、数据库配置错误、网络连接问题、安全策略限制等。本文将针对这些问题进行详细解析,并提供相应的解决方法。首先,我们需要检查数据库服务器是否宕机。阿里云数据库
阿里云数据库链接失败原因及解决方法
2023-11-22

Windows 2008驱动安装失败的原因及解决方法

希望这些内容能够帮助各位朋友顺利地在Windows Server 2008系统环境下安装使用好各种设备的驱动程序!寻找安装失败原因一般来说,当我们将目标设备的驱动安装光盘正确放置到Windows Server 2008系统的物理光驱中后,系
2023-06-01

gradle构建失败的原因及解决方法是什么

Gradle 构建失败的原因有很多,常见的包括:1. 依赖冲突:如果项目中存在多个库或模块的版本冲突,可能会导致构建失败。解决方法是通过查看构建错误信息,确定哪些库之间存在冲突,并在构建文件中指定正确的版本或解决冲突。2. 缺少依赖或插件:
2023-10-12

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录