2021-04-10

@RequestParam 出现的数据丢失

问题复现

  • 在 Sping MVC 中我们经常使用 @RequestParam 注解来获取请求传入的参数。
  • 正常情况下可以正常使用不会产生问题,当传入的参数过大时就会出现参数不全的情况。
  • 下有一段控制器代码如下:
@RestControllerpublic class ApiController{		@PostMapping("in")	public ResponseMessage inbound(@RequestParam Map params) {	 System.out.println(params);	}}
  • 以上代码当传入的请求参数过长时就会出现参数获取不全的情况。

解决方式

方式一:使用 @RequestBody 注解

  • 这种方式传入的数据必须要在请求体内才可以获取到数据。
  • 示例代码:
@RestControllerpublic class ApiController{		@PostMapping("in")	public ResponseMessage inbound(@RequestBody Map data) { 	 System.out.println(data);	}}

方式二:使用 request.getParameterMap() 方法

  • 这种方式是通过原生的 HttpServletRequest 对象来获取传入的参数。
  • 示例代码:
@RestControllerpublic class ApiController{		@PostMapping("in")	public ResponseMessage inbound(HttpServletRequest request) {		Map<String,String[]> paramMap = request.getParameterMap();	}}
  • 获取到的 Map 值是一个字符串数组类型,获取第一个字符串就可以获取到对应的数据。
  • 字符串数组是为了参数中一个参数名多次赋值的的情况一般我们获取第一个就好。








原文转载:http://www.shaoqun.com/a/676734.html

跨境电商:https://www.ikjzd.com/

acca是什么:https://www.ikjzd.com/w/1370

韩国naver:https://www.ikjzd.com/w/1727


问题复现在SpingMVC中我们经常使用@RequestParam注解来获取请求传入的参数。正常情况下可以正常使用不会产生问题,当传入的参数过大时就会出现参数不全的情况。下有一段控制器代码如下:@RestControllerpublicclassApiController{ @PostMapping("in") publicResponseMessageinbound(@Re
笨鸟转运:https://www.ikjzd.com/w/1550
feedback:https://www.ikjzd.com/w/159
易速:https://www.ikjzd.com/w/2389
Moose Toys Pty LTD和Shopkins被爆侵权,EPS起诉近百卖家!:https://www.ikjzd.com/home/7847
海音汇2016跨境电商高峰论坛:https://www.kjyunke.com/courses/104
数据分析详解 利用后台数据分析,提高销量,干货满满~:https://www.ikjzd.com/tl/2710

No comments:

Post a Comment