springmvc 使用map接收參數(shù)
開(kāi)發(fā)過(guò)程中有時(shí)候我們并不知道前端都會(huì)傳遞哪些參數(shù)給到后端. 為方便擴(kuò)展接口功能, 在請(qǐng)求參數(shù)不改變的情況下兼容前端新增的入?yún)⒌男枨螅?我們會(huì)考慮使用map接受參數(shù). 這樣無(wú)論前端加減參數(shù), controller的入?yún)⑹遣恍枰儎?dòng)的.
第一種情況:請(qǐng)求參數(shù)有多組
如:一組個(gè)人信息, 一組地址信息
請(qǐng)求參數(shù):
{ "personInfo": { "name1": "zona", "name2": "carl", "age": 23 }, "address": { "上海": "code1", "北京": "code2" } }
controller層代碼:
// map的value參數(shù)類(lèi)型設(shè)置為object @PostMapping("/map") public void map(@RequestBody Map<String, Object> mapParam){ System.out.println(mapParam); }
controller層接受參數(shù):
第二種情況:所有的參數(shù)不分組
請(qǐng)求參數(shù):
{ "name1": "zona", "name2": "carl", "age": 23 }
controller層代碼
// map的value類(lèi)型是String @PostMapping("/map") public void map(@RequestBody Map<String, String> mapParam){ System.out.println(mapParam); }
controller層接受參數(shù)
用map接收參數(shù)的幾個(gè)注意的問(wèn)題
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的參數(shù)不能寫(xiě)value
否則不能自動(dòng)打包前面的字段,其與模型驅(qū)動(dòng),屬性驅(qū)動(dòng)不沖突,最多就是數(shù)據(jù)冗余
2、對(duì)于多個(gè)同名字段
map只會(huì)取第一個(gè),不會(huì)變成字符數(shù)組,或用,隔開(kāi),此時(shí)只能用屬性驅(qū)動(dòng),或模型驅(qū)動(dòng)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/changerzhuo_319/article/details/104426846