問題復現
- 在 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 值是一個字串陣列型別,獲取第一個字串就可以獲取到對應的資料,
- 字串陣列是為了引數中一個引數名多次賦值的的情況一般我們獲取第一個就好,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/274675.html
標籤:其他
上一篇:Qt信號槽原始碼剖析(一)
