基于controller使用map接收參數(shù)的注意事項
更新時間:2021年10月28日 17:05:54 作者:qq_16992475
這篇文章主要介紹了基于controller使用map接收參數(shù)的注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
controller使用map接收參數(shù)注意事項
關(guān)于前端使用map去接收參數(shù)的問題
@PostMapping("test01") @ResponseBody // 如果這里不加@RequestBody,那么springmvc默認(rèn)創(chuàng)建的是BindAwareModelMap public Object test01( Map dataMap) { // 對象,并且都參數(shù)都不會封裝進(jìn)去 System.out.println(dataMap); dataMap = null; return new BindingAwareModelMap(); // 如果返回BindingAwareModelMap對象,就會拋出異常 }
正確封裝姿勢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ù)都會封裝進(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);
正確封裝姿勢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測試
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, "列表條件查詢失敗"); } }
使用postman測試
controller使用map接收參數(shù)時必須使用 @RequestBody接收參數(shù),否則后臺會出現(xiàn)接收不到的情況
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot靜態(tài)資源映射規(guī)則淺析
這篇文章主要介紹了SpringBoot靜態(tài)資源映射規(guī)則,今天在玩SpringBoot的demo的時候,放了張圖片在resources目錄下,啟動區(qū)訪問的時候,突然好奇是識別哪些文件夾來展示靜態(tài)資源的, 為什么有時候放的文件夾不能顯示,有的卻可以2023-02-02SpringBoot3集成ElasticSearch的方法詳解
Elasticsearch是一個分布式、RESTful風(fēng)格的搜索和數(shù)據(jù)分析引擎,適用于各種數(shù)據(jù)類型,數(shù)字、文本、地理位置、結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù),本文給大家詳解介紹了SpringBoot3集成ElasticSearch的方法,需要的朋友可以參考下2023-08-08java使用監(jiān)聽器實現(xiàn)一個統(tǒng)計網(wǎng)站在線人數(shù)的示例
本文主要介紹了java使用監(jiān)聽器實現(xiàn)一個統(tǒng)計網(wǎng)站在線人數(shù)的示例,具有一定的參考價值,有需要的朋友可以了解一下。2016-10-10