springmvc 使用map接收參數
開發過程中有時候我們并不知道前端都會傳遞哪些參數給到后端. 為方便擴展接口功能, 在請求參數不改變的情況下兼容前端新增的入參的需求, 我們會考慮使用map接受參數. 這樣無論前端加減參數, controller的入參是不需要變動的.
第一種情況:請求參數有多組
如:一組個人信息, 一組地址信息
請求參數:
{ "personInfo": { "name1": "zona", "name2": "carl", "age": 23 }, "address": { "上海": "code1", "北京": "code2" } }
controller層代碼:
// map的value參數類型設置為object @PostMapping("/map") public void map(@RequestBody Map<String, Object> mapParam){ System.out.println(mapParam); }
controller層接受參數:
第二種情況:所有的參數不分組
請求參數:
{ "name1": "zona", "name2": "carl", "age": 23 }
controller層代碼
// map的value類型是String @PostMapping("/map") public void map(@RequestBody Map<String, String> mapParam){ System.out.println(mapParam); }
controller層接受參數
用map接收參數的幾個注意的問題
public void TbConOrdPriceSubmit(@RequestParam(value="cdListKeyArrayFront",required=false) String[] cdListKeyArrayFront,@RequestParam(required=false) Map parMap, HttpSession session, HttpServletRequest request, HttpServletResponse response, Model model, TbConOrdVo tbConOrdVo)
1、接受map的參數不能寫value
否則不能自動打包前面的字段,其與模型驅動,屬性驅動不沖突,最多就是數據冗余
2、對于多個同名字段
map只會取第一個,不會變成字符數組,或用,隔開,此時只能用屬性驅動,或模型驅動
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/changerzhuo_319/article/details/104426846