SpringMVC控制器接收不了PUT提交的参数的解决方案
找到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提交的参数的解决方案相关推荐
- java处理表单变量_Java自学之SpringMVC:接收表单数据
学习目的:使用SpringMVC接收表单数据. Part 1 新建一个pojo. package pojo; public class Product { private int id; privat ...
- .net mvc actionresult 返回字符串_072-SpringMVC后端控制器接收参数、处理器方法返回值类型、拦截器、文件上传下载...
1. 注解式开发之annotation-driven解释 (1) mvc注解驱动在哪个文件中配置? 在springmvc中配置 (2) 配置mvc注解驱动使用哪个标签? 2. 注解式开发之视图解析器 ...
- SpringMVC数据接收及传递
目录 一.SpringMVC 数据接收及传递 1.获取参数 1.1 Servlet获取 1.2 参数名获取 1.3 对象映射获取 2.参数传递 2.1 域对象传递 2.2 ModelAndView传递 ...
- mvc控制器接收数据的两种方法
一.mvc控制器接收数据的两种方法 A方法: public ActionResult ProcessAdd() { string username=Request["UserName&quo ...
- Angular服务http post传递key-value 到Springmvc控制器
1 在angular使用http服务时候,我们通常是这样的,这样会param 放到body 里面去 var param = {id:flyid}return $http({method: 'post' ...
- springmvcget中文乱码_解决SpringMVC Controller 接收页面传递的中文参数出现乱码的问题...
新配置一个spring的MVC项目,发现对Get请求的中文参数出现了乱码: 查看了SpingMVC中关于编码的配置(在web.xml中),如下: encodingFilter org.springfr ...
- angular的post请求,SpringMVC后台接收不到参数值的解决方案
angular的post请求,SpringMVC后台接收不到参数值的解决方案 参考文章: (1)angular的post请求,SpringMVC后台接收不到参数值的解决方案 (2)https://ww ...
- springboot如何接收Vue 的post提交请求
最近在研究vue项目,通过vue向springboot后台提交数据,后台却接收不到数据,解决办法:上代码 第一步:首先看前台vue的提交数据代码, (提交的数据包含文本编辑器内容,如果文本内容太多提交 ...
- 后端接收Get请求与Post请求 参数示例
博主介绍: 22届计科专业毕业,来自湖南,主要是在CSDN记录一些自己在Java开发过程中遇到的一些问题,欢迎大家一起讨论学习,也欢迎大家的批评指正. 文章目录 前言 正文 接收Get请求的参数 不使 ...
最新文章
- SSH服务器管理与Termux使用
- for循环的一种加速方法
- 1129 Recommendation System (25 分)【难度: 一般 / 知识点: 滑动窗口】
- 错误: libstdc++.so.6: cannot open shared object file: No such file or directory
- 我的Go语言学习之旅六:做一个WIN的简单弹窗
- java8中方法区的内存大小如何设置_从Java8升级到Java11
- Jonathan Bryce说:OpenStack属于全世界,并不属于一个公司,也不会属于一个国家……...
- 在.net中序列化读写xml方法的总结(转载)
- OpenCV python Calibration
- 如果Mac在播放音乐时遇到问题,没有声音或无法调整音量,该怎么办呢?
- 用Arduino+OSC建立一个iPad铁路王国巡视机
- mysql日志课程_【mysql课程七】 MySQL日志管理
- 获取spring 框架源码方式
- Javashop开启全新微服务时代
- 打蚊子表情包_打死蚊子表情包 - 打死蚊子微信表情包 - 打死蚊子QQ表情包 - 发表情 fabiaoqing.com...
- Python 实现字节转换函数
- 计算机组成原理 / 反汇编实验(2)拆弹实验
- Linux:sk_buff完全剖析与理解【转】
- 在 Kubernetes 上部署 Traefik Ingress
- 大文件传输利器HFS的配置及简单使用
热门文章
- kthread_run创建内核线程的原理
- 内核request_mem_region 和 ioremap的理解
- android自带的nsd发现服务器,Android网络服务发现(NSD)协议的使用
- (chap 2 简单的Http协议) HTTP方法(1)getput
- python——装饰器
- L4Re Runtime Environment 学习资料
- optee中的panic函数实现
- [architecture]-ARMV8的ELx等级切换
- (66)全局句柄表,遍历全局句柄表
- 160个Crackme040