基于controller使用map接收參數(shù)的注意事項(xiàng)
controller使用map接收參數(shù)注意事項(xiàng)
關(guān)于前端使用map去接收參數(shù)的問題
@PostMapping("test01")
@ResponseBody // 如果這里不加@RequestBody,那么springmvc默認(rèn)創(chuàng)建的是BindAwareModelMap
public Object test01( Map dataMap) { // 對(duì)象,并且都參數(shù)都不會(huì)封裝進(jìn)去
System.out.println(dataMap);
dataMap = null;
return new BindingAwareModelMap(); // 如果返回BindingAwareModelMap對(duì)象,就會(huì)拋出異常
}
正確封裝姿勢(shì)1
@Controller
@RequestMapping("map")
public class MapController {
@PostMapping("test01")
@ResponseBody // 如果加了@RequestBody,那么創(chuàng)建的是LinkedHashMap
public Object test01(@RequestBody Map dataMap) { // 并且參數(shù)都封裝了進(jìn)去(url路徑參數(shù)和json參數(shù)都會(huì)封裝進(jìn)去)
System.out.println(dataMap);
dataMap.put("msg", "ojbk");
return dataMap;
}
}
結(jié)論:如果使用map接收前端參數(shù),那么一定要加@Requestbody才行
#mybatis使用map封裝參數(shù),
@Select("select * from t_product where pid = #{pid} or pname = #{pname}")
List<Product> getByMap(Map map);
#mybatisplus中有寫好的方法
List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);
正確封裝姿勢(shì)2
@Data
public class Page {
private Map dataMap = new HashMap(); // 這里可以不用初始化,加了@RequestBody,默認(rèn)創(chuàng)建LinkdedHashMap
}
@Controller
@RequestMapping("map")
public class MapController {
@PostMapping("test01")
@ResponseBody
public Object test01(@RequestBody Page page) { // 一定要加@RequestBody,否則封裝不進(jìn)去
return page;
}
}
前端需要使用json傳參格式:
{
"dataMap":{
"name":"zzhua"
}
}
controller使用map接收參數(shù)并用POSTman測(cè)試
controller層
@PostMapping("/xksq/getGjclByCondition")
public ResultInfo getGjclByCondition(@RequestBody Map<String,Object> params,HttpServletRequest request){
Map<String,Object> map = new HashMap<>();
try {
Integer iPageIndex = (Integer) params.get("iPageIndex");
Integer iPageSize = (Integer) params.get("iPageSize");
PageHelper.startPage(iPageIndex!=null?iPageIndex:1,iPageSize!=null?iPageSize:10);
String username = JwtUtil.getUsername(request.getHeader("token"));
Rfgcgl user = rfgcglMapper.selectOne(new QueryWrapper<Rfgcgl>().eq("YHMC", username));
if(null==user){
return ResultInfo.fail(903,"用戶不存在");
}
params.put("qynbbh",user.getQyNbBh());
List<Map<String, Object>> gjclByCondition = clxxQysqMapper.getGjclByCondition(params);
PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(gjclByCondition);
map.put("total",pageInfo.getTotal());
map.put("datas",pageInfo);
return ResultInfo.ok(map);
}catch (Exception e){
e.printStackTrace();
return ResultInfo.fail(901, "列表?xiàng)l件查詢失敗");
}
}
使用postman測(cè)試

controller使用map接收參數(shù)時(shí)必須使用 @RequestBody接收參數(shù),否則后臺(tái)會(huì)出現(xiàn)接收不到的情況
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot集成阿里云OSS上傳文件系統(tǒng)教程
這篇文章主要介紹了Springboot集成阿里云OSS上傳文件系統(tǒng)教程,通過詳細(xì)的圖文展示,代碼步驟的展示和文件配置信息,希望對(duì)你有所幫助2021-06-06
Spring+MyBatis實(shí)現(xiàn)數(shù)據(jù)讀寫分離的實(shí)例代碼
本篇文章主要介紹了Spring+MyBatis實(shí)現(xiàn)數(shù)據(jù)讀寫分離的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
SpringBoot中ApplicationEvent和ApplicationListener用法小結(jié)
這篇文章介紹SpringBoot中ApplicationEvent用法,注意ApplicationEvent和MQ隊(duì)列雖然實(shí)現(xiàn)的功能相似,但是MQ還是有其不可替代性的,最本質(zhì)的區(qū)別就是MQ可以用于不同系統(tǒng)之間的消息發(fā)布,而SpringEvent這種模式只能在一個(gè)系統(tǒng)中,需要的朋友可以參考下2023-03-03
idea項(xiàng)目文件夾橫向顯示,縱向顯示的解決方法
這篇文章主要介紹了idea項(xiàng)目文件夾橫向顯示,縱向顯示的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
mybatis 連接mysql數(shù)據(jù)庫(kù) tinyint 為boolean類型詳解
這篇文章主要介紹了mybatis 連接mysql數(shù)據(jù)庫(kù) tinyint 為boolean類型詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11
Spring Boot獲取微信用戶信息的超簡(jiǎn)單方法
這篇文章主要給大家介紹了關(guān)于Spring Boot獲取微信用戶信息的超簡(jiǎn)單方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
mybatis的好幫手之MybatisCodeHelperPro詳解
這篇文章主要介紹了mybatis的好幫手之MybatisCodeHelperPro詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
HttpClient實(shí)現(xiàn)遠(yuǎn)程調(diào)用
這篇文章主要為大家詳細(xì)介紹了HttpClient實(shí)現(xiàn)遠(yuǎn)程調(diào)用的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08

