一,需求如下

1.前端js封装map对象,通过ajax发起请求,后端通过springboot进行参数的处理

二,js前端数据结构,其中id为业务中的指标编号

var map = {};
var obj = {leaderId : leaderId,uuid : uuid,quotaId:id,scroe:parseInt(scroe)+1,}
map[id] = obj;

ajax部分代码,关键部分为maoJson:map,

$.ajax({type : "POST",dataType : "json",url : "/user/noNameSubmit",data : {gid: gid,mapJson: map,yearDetailId:yearDetailId,},async : false,success : function(data) {alert(data)});

二,后台controller层代码,说明:quotaIdIndex = quotaIdIndex.substring(8, 13); 这一段获取quotaId指标编号 业务中指标编号为5位,与前端封装的quotaId对应

/*** 获取领导成员评分明细* * @param fdusername* @return*/@PostMapping("/user/noNameSubmit")@Transactionalpublic @ResponseBody ResponseBase noNameSubmit(HttpServletRequest request,String gid,String yearDetailId) {Enumeration<String> enuq = request.getParameterNames();List<String> listQuotaId = new ArrayList<String>();while (enuq.hasMoreElements()) {String name = (String) enuq.nextElement();// 获取quotaId 封装成 集合再遍历if (name.contains("quotaId")) {listQuotaId.add(name);}}List<LeaderQuotaJson> listQuotaJsons = new ArrayList<LeaderQuotaJson>();// 获取quotaId 封装成 集合再遍历for (int i = 0; i < listQuotaId.size(); i++) {String quotaIdIndex = listQuotaId.get(i);quotaIdIndex = quotaIdIndex.substring(8, 13);Integer leaderId = Integer.parseInt(request.getParameter("mapJson[" + quotaIdIndex + "][leaderId]"));String uuid = request.getParameter("mapJson[" + quotaIdIndex + "][uuid]");Integer quotaId = Integer.parseInt(request.getParameter("mapJson[" + quotaIdIndex + "][quotaId]"));Integer scroe = Integer.parseInt(request.getParameter("mapJson[" + quotaIdIndex + "][scroe]"));LeaderQuotaJson leaderQuotaJson = new LeaderQuotaJson(leaderId, uuid, quotaId, scroe);listQuotaJsons.add(leaderQuotaJson);}//循环调用插入方法for (LeaderQuotaJson leaderQuotaJson : listQuotaJsons) {iSysIndexService.saveQuotaComment(leaderQuotaJson.getLeaderId(), leaderQuotaJson.getUuid(), "",leaderQuotaJson.getQuotaId(), leaderQuotaJson.getScroe(),yearDetailId);}return setResultSuccess("提交成功");}

三,原理说明

代码中业务代码较多,这里简单说明一下实现的原理,前端,实际上使用的数组,var map={}  数据结构的存储效果类似于java中的map集合,同一key后插入的数据会替换之前的数据;

后端也在网上找了很多框架接收map集合的方法,都未实现成功,决定用最原始的request中获取对象,进行分析和重新封装,并与业务进行结合,第一步获取map中的所有key值

Enumeration<String> enuq = request.getParameterNames();List<String> listQuotaId = new ArrayList<String>();while (enuq.hasMoreElements()) {String name = (String) enuq.nextElement();// 获取quotaId 封装成 集合再遍历if (name.contains("quotaId")) {listQuotaId.add(name);}}

第二步,从request.getParameter("mapJson[" + quotaIdIndex + "][leaderId]")获取对应参数的值即可,其中mapJson为js中传入参数的参数名称

ajax-传递map集合,springboot接收参数相关推荐

  1. php ajax向后台怎么传数组,利用ajax传递数组及后台接收的方法详解

    这篇文章主要给大家介绍了关于利用ajax传递数组及后台接收的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们一起来学习学习吧. 前言 我们在使用ajax异步的提交多选框得到需要 ...

  2. ajax传递数组到后台时为空,ajax传递数组,后台接收为null解决方法

    traditional:true,加上这个就好,默认为false,即允许深度序列化参数,但是servlet api不支持,所有设为true阻止就好了. $.ajax({ type:'post', ur ...

  3. ajax传递list集合

    一:ajax传递List<String>类型的数据 js代码: //声明list var _list = []; //放入string对象 for (var i = 0; i < 3 ...

  4. ajax传递map参数给后端

    向后端传递一个参数 /*** 前端ajax代码部分*/var map = '{"account":"' + account + '"}'; //设定一个事件触发 ...

  5. ajax传递复选框的参数,ajax将table复选框的数组值传递到后台

    //头工具栏事件 table.on('toolbar(gv_SalesOrderInfo)', function (obj) { debugger; var ItemId = []; var chec ...

  6. ajax前端传数组后端接收,前端AJAX传递数组给Springmvc接收处理

    前端传递数组后端(Spring)来接收并处理: 测试页面 function ccc() { var btn = document.getElementById("btn"); $. ...

  7. ajax传递数组,后台接收为null解决方法

    traditional:true,加上这个就好,默认为false,即允许深度序列化参数,但是servlet api不支持,所有设为true阻止就好了. $.ajax({ type:'post', ur ...

  8. Ajax 获取Map集合

    Java代码: Student stu1=new Student();stu1.setName("Ajax1");stu1.setSex("nan");stu1 ...

  9. ajax获取jsp对象,如何用Ajax传递一个对象集合到jsp页面。

    我想在我的几后来含些在到气时按式近篇来又的方浏消风web项目(struts2+hibernate)的首页的页面输出数据库的News这个表的内容,请问具体的代码是怎样的,我都快点疯了一说为年供发架据制个 ...

最新文章

  1. Android超时退出功能解决方案
  2. 面试总结-百度(1)
  3. 实录分享 | 计算未来轻沙龙:对话系统研究进展(视频 + PPT)
  4. gj6 深入python的set和dict
  5. 【算法】学习笔记(2):递归思想
  6. [js] 写一个获取页面中所有checkbox的方法
  7. java 反射类 实例化_java-如何在Android上通过反射实例化成员类
  8. cocos2dx 实现简单的文件上传到php服务器的demo
  9. Gamma 函数与exponential power distribution (指数幂分布)
  10. php strpbrk,PHP 字符串
  11. 储能系统下垂控制,蓄电池通过双向dc/dc变换器并联负载,变换器输出电流按虚拟电阻比例分配
  12. DVWA网盘下载和安装教程 详解
  13. 计算机截图工具无法运行,win7系统打开截图工具提示“截图工具当前未在计算机上运行”的解决方法...
  14. css选择最后一个元素
  15. 电气转行嵌入式还是java_19 届 985 毕业生想从电气行业转行到 IT 行业,你们怎么看?...
  16. jeeplus框架代码生成器功能的使用
  17. R语言使用plot函数可视化数据散点图,使用title函数为可视化图像设置自定义标题名称、自定义adj参数将标题向右侧移动
  18. 企业从无到有,云账户CEO大谈创业时代的创业者思维
  19. 自媒体必备工具合集分享
  20. 名图怎么弄云服务器_名图怎么弄云服务器

热门文章

  1. Android Studio初学者实例:SQLite实验:绿豆通讯录
  2. Unity Shader实现人物透视效果
  3. android开发(2) - 九宫格的实现
  4. 新职业英语计算机unit5,新职业英语IT英语Unit5 Sales of IT Products II.ppt
  5. AMBA总线—AHB总线协议详解
  6. PyQt自定义MessageBox
  7. JSR303是啥?有啥用处?
  8. update set from 以及表 数据的复制 insert into select from ....
  9. 仁微电子蓝牙物联网赋能智慧医院,助力上海市皮肤病医院新楼打造“5G+医疗健康应用试点”
  10. 如何使用CMD操纵MySQL数据库?