基于controller使用map接收參數(shù)的注意事項(xiàng)
controller使用map接收參數(shù)注意事項(xiàng)
關(guān)于前端使用map去接收參數(shù)的問(wèn)題
@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中有寫(xiě)好的方法 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靜態(tài)資源映射規(guī)則淺析
這篇文章主要介紹了SpringBoot靜態(tài)資源映射規(guī)則,今天在玩SpringBoot的demo的時(shí)候,放了張圖片在resources目錄下,啟動(dòng)區(qū)訪問(wèn)的時(shí)候,突然好奇是識(shí)別哪些文件夾來(lái)展示靜態(tài)資源的, 為什么有時(shí)候放的文件夾不能顯示,有的卻可以2023-02-02Spring Junit單元測(cè)試加載配置文件失敗問(wèn)題
這篇文章主要介紹了Spring Junit加載配置文件失敗問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05SpringBoot3集成ElasticSearch的方法詳解
Elasticsearch是一個(gè)分布式、RESTful風(fēng)格的搜索和數(shù)據(jù)分析引擎,適用于各種數(shù)據(jù)類(lèi)型,數(shù)字、文本、地理位置、結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù),本文給大家詳解介紹了SpringBoot3集成ElasticSearch的方法,需要的朋友可以參考下2023-08-08java使用監(jiān)聽(tīng)器實(shí)現(xiàn)一個(gè)統(tǒng)計(jì)網(wǎng)站在線人數(shù)的示例
本文主要介紹了java使用監(jiān)聽(tīng)器實(shí)現(xiàn)一個(gè)統(tǒng)計(jì)網(wǎng)站在線人數(shù)的示例,具有一定的參考價(jià)值,有需要的朋友可以了解一下。2016-10-10