码迷,mamicode.com
首页 > 其他好文 > 详细

@RequestParam 出现的数据丢失

时间:2021-04-12 11:52:58      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:方法   ram   str   res   print   tps   mvc   params   出现   

问题复现

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

解决方式

方式一:使用 @RequestBody 注解

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

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

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

@RequestParam 出现的数据丢失

标签:方法   ram   str   res   print   tps   mvc   params   出现   

原文地址:https://www.cnblogs.com/devzyh/p/14641340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!