SpringMVC接收对象数组参数进行封装
前台代码:注意.contentType : "application/json; charset=utf-8",必须要设置,只有这样SpringMVC才认识这个json数组参数
1 function saveRole() { 2 /* 获取所有勾选的节点 */ 3 var treeObj = $.fn.zTree.getZTreeObj("treeDemo"); 4 var nodes = treeObj.getCheckedNodes(true); 5 6 /* 获取选中的角色id */ 7 var roleId = $(".selector").attr("roleId"); 8 var roleMenusArray = [];//对象数组 9 var roleMenu; 10 for ( var node in nodes) {//循环所有选中的节点 11 roleMenu = new Object();//初始化对象 12 roleMenu.roleId = roleId;//角色id 13 roleMenu.menuId = nodes[node].id;//菜单id 14 roleMenusArray.push(roleMenu);//放入数组 15 } 16 var roleMenus = JSON.stringify(roleMenusArray);//将数组转换为json数组字符串 17 18 /* 发送异步请求进行权限修改 */ 19 $.ajax({ 20 type : "post", 21 url : "${ctx}/sys/updateRoleMenu.html", 22 data : roleMenus, 23 contentType : "application/json; charset=utf-8", 24 dataType : "json", 25 success : function(data) { 26 layer.open({ 27 content : data.msg, 28 offset : [ 100, 400 ], 29 icon: 6 30 }); 31 }, 32 error : function() { 33 alert("error"); 34 } 35 }) 36 console.log(nodes) 37 }
后台代码:
1 @RequestMapping(value = "/updateRoleMenu.html", method = RequestMethod.POST, 2 produces = "text/html;charset=UTF-8;") 3 @ResponseBody 4 public String updateRoleMenu(@RequestBody List<SysRoleMenu> list, HttpServletRequest request, 5 HttpServletResponse response) { 6 MsgVo msgVo = new MsgVo() ; 7 try { 8 if (list != null && list.size() > 0) { 9 for (SysRoleMenu sysRoleMenu : list) { 10 sysRoleMenu.setId(commonUtil.getUUID()) ; 11 } 12 13 // 先删除以前的 14 sysRoleMenuService.deleteByRoleId(list.get(0).getRoleId()) ; 15 16 // 添加用户重新赋予的权限 17 boolean res = sysRoleMenuService.batchAddByList(list) ; 18 19 if (!res) { 20 msgVo.setStatus(500) ; 21 msgVo.setMsg("修改菜单权限失败!") ; 22 } else { 23 msgVo.setStatus(200) ; 24 msgVo.setMsg("修改菜单权限成功!") ; 25 26 // 写入日志 bg 27 SysLog sysLog = new SysLog() ; 28 sysLog.setId(commonUtil.getUUID()) ; // id 29 sysLog.setLogId(commonUtil.getUUID()) ; // 主键 30 sysLog.setLogType(GLOBAL_CONSTANT.sys_log_column1[1]) ;// 日志类型 31 sysLog.setLogTitle("系统管理/角色管理") ;// 功能标题 32 sysLog.setLogUrl(commonUtil.getRequestURL(request, response)) ; // url地址 33 sysLog.setLogMethod(commonUtil.getMethod(request, response)) ; // 提交方法 34 sysLog.setCreateBy(request.getSession().getAttribute("userName").toString()) ; // 创建人 35 sysLog.setCreateDate(DateUtil.getcurrentDate()) ; // 创建时间 36 sysLog.setLogContent("系统用户---->>" 37 + request.getSession().getAttribute("userName").toString() 38 + "修改菜单权限,时间---->>" + DateUtil.getCurrentDate()) ;// 操作日志的内容 39 sysLog.setRemarks("") ; // 备注 40 sysLog.setLogError("") ; 41 sysLogservice.insert(sysLog) ; 42 // 写入日志 ed 43 44 } 45 } 46 } catch (Exception e) { 47 e.printStackTrace() ; 48 } 49 return jsonUtil.objToJson(msgVo) ; 50 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构