找到web项目的web.xml的文件的ContextLoaderListener这个监听器,将这个改为下面的配置:

<!-- 解决PUT请求无法提交表单数据的问题 -->
<filter><filter-name>HttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
</filter>
<filter-mapping><filter-name>HttpMethodFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping><!-- 将POST请求转化为DELETE或者是PUT 要用_method指定真正的请求参数 -->
<filter><filter-name>HiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping><filter-name>HiddenHttpMethodFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

如果以上方法会出现springmvc请求参数获取不到的话,请改为下面的方式:

<!-- 解决PUT请求无法提交表单数据的问题 --><filter><filter-name>HttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class></filter><filter-mapping><filter-name>HttpMethodFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 将POST请求转化为DELETE或者是PUT 要用_method指定真正的请求参数 --><filter><filter-name>HiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter><filter-mapping><filter-name>HiddenHttpMethodFilter</filter-name><!--servlet为springMvc的servlet名 --><servlet-name>SpringMVC</servlet-name></filter-mapping>

现在再用put请求就没问题了。

如果以上的方法还是不能够解决你的问题的话,我还遇到过其他的解决方法。

1、当你的springmvc的controller方法是以下时
 /*** 修改用户* @param user* @return*/@RequestMapping(value = "/user", method = RequestMethod.PUT)public ResponseEntity updateUserByUserId(User user){try {userService.updateUserById(user);} catch (Exception e) {e.printStackTrace();return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);}return ResponseEntity.status(HttpStatus.OK).body(null);}

这里直接用pojo,来接收前端发送过来的数据,但是这种方法我做项目的时候就是获取不了数据。然后,我就想着用@RequestParam注解看能不能解决,于是,变成了下面的代码:

2、用@RequestParam试试
 /*** 修改用户* @param user* @return*/@RequestMapping(value = "/user", method = RequestMethod.PUT)public ResponseEntity updateUserByUserId(@RequestParam("user")User user){try {userService.updateUserById(user);} catch (Exception e) {e.printStackTrace();return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);}return ResponseEntity.status(HttpStatus.OK).body(null);}

但是,很难受,还是不行,而且,这样还会报一个user is not present 的错误。这个错误的意思是这个user不存在

解决这个错误方法:

**1、**如果你获取到了前端的数据,那么很简单在@RequestParam加上一个参数required=false,这个值默认为true,作用为:在传参数的时候,必须要有值,不然就报错。

@RequestParam(value= "user", required= false)User user

**2、**如果没有获取到前端的数据,那个悲剧了,我就找了好久解决。

**解决方法:**不用@RequestParam,换成@requestBody注解就解决了。

@requestBody:如果方法加上了@ResponseBody注解,Spring返回值到响应体。如果这样做的话,Spring将根据请求中的 Content-Type header(私下)使用 HTTP Message converters 来将domain对象转换为响应体。

也就是,在前端测试的时候,用json格式的数据来解决就行,这也正好符合前后端分离的效果

SpringMVC控制器接收不了PUT提交的参数的解决方案相关推荐

  1. java处理表单变量_Java自学之SpringMVC:接收表单数据

    学习目的:使用SpringMVC接收表单数据. Part 1 新建一个pojo. package pojo; public class Product { private int id; privat ...

  2. .net mvc actionresult 返回字符串_072-SpringMVC后端控制器接收参数、处理器方法返回值类型、拦截器、文件上传下载...

    1. 注解式开发之annotation-driven解释 (1) mvc注解驱动在哪个文件中配置? 在springmvc中配置 (2) 配置mvc注解驱动使用哪个标签? 2. 注解式开发之视图解析器 ...

  3. SpringMVC数据接收及传递

    目录 一.SpringMVC 数据接收及传递 1.获取参数 1.1 Servlet获取 1.2 参数名获取 1.3 对象映射获取 2.参数传递 2.1 域对象传递 2.2 ModelAndView传递 ...

  4. mvc控制器接收数据的两种方法

    一.mvc控制器接收数据的两种方法 A方法: public ActionResult ProcessAdd() { string username=Request["UserName&quo ...

  5. Angular服务http post传递key-value 到Springmvc控制器

    1 在angular使用http服务时候,我们通常是这样的,这样会param 放到body 里面去 var param = {id:flyid}return $http({method: 'post' ...

  6. springmvcget中文乱码_解决SpringMVC Controller 接收页面传递的中文参数出现乱码的问题...

    新配置一个spring的MVC项目,发现对Get请求的中文参数出现了乱码: 查看了SpingMVC中关于编码的配置(在web.xml中),如下: encodingFilter org.springfr ...

  7. angular的post请求,SpringMVC后台接收不到参数值的解决方案

    angular的post请求,SpringMVC后台接收不到参数值的解决方案 参考文章: (1)angular的post请求,SpringMVC后台接收不到参数值的解决方案 (2)https://ww ...

  8. springboot如何接收Vue 的post提交请求

    最近在研究vue项目,通过vue向springboot后台提交数据,后台却接收不到数据,解决办法:上代码 第一步:首先看前台vue的提交数据代码, (提交的数据包含文本编辑器内容,如果文本内容太多提交 ...

  9. 后端接收Get请求与Post请求 参数示例

    博主介绍: 22届计科专业毕业,来自湖南,主要是在CSDN记录一些自己在Java开发过程中遇到的一些问题,欢迎大家一起讨论学习,也欢迎大家的批评指正. 文章目录 前言 正文 接收Get请求的参数 不使 ...

最新文章

  1. SSH服务器管理与Termux使用
  2. for循环的一种加速方法
  3. 1129 Recommendation System (25 分)【难度: 一般 / 知识点: 滑动窗口】
  4. 错误: libstdc++.so.6: cannot open shared object file: No such file or directory
  5. 我的Go语言学习之旅六:做一个WIN的简单弹窗
  6. java8中方法区的内存大小如何设置_从Java8升级到Java11
  7. Jonathan Bryce说:OpenStack属于全世界,并不属于一个公司,也不会属于一个国家……...
  8. 在.net中序列化读写xml方法的总结(转载)
  9. OpenCV python Calibration
  10. 如果Mac在播放音乐时遇到问题,没有声音或无法调整音量,该怎么办呢?
  11. 用Arduino+OSC建立一个iPad铁路王国巡视机
  12. mysql日志课程_【mysql课程七】 MySQL日志管理
  13. 获取spring 框架源码方式
  14. Javashop开启全新微服务时代
  15. 打蚊子表情包_打死蚊子表情包 - 打死蚊子微信表情包 - 打死蚊子QQ表情包 - 发表情 fabiaoqing.com...
  16. Python 实现字节转换函数
  17. 计算机组成原理 / 反汇编实验(2)拆弹实验
  18. Linux:sk_buff完全剖析与理解【转】
  19. 在 Kubernetes 上部署 Traefik Ingress
  20. 大文件传输利器HFS的配置及简单使用

热门文章

  1. kthread_run创建内核线程的原理
  2. 内核request_mem_region 和 ioremap的理解
  3. android自带的nsd发现服务器,Android网络服务发现(NSD)协议的使用
  4. (chap 2 简单的Http协议) HTTP方法(1)getput
  5. python——装饰器
  6. L4Re Runtime Environment 学习资料
  7. optee中的panic函数实现
  8. [architecture]-ARMV8的ELx等级切换
  9. (66)全局句柄表,遍历全局句柄表
  10. 160个Crackme040