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     }
原文地址:https://www.cnblogs.com/xujingyang/p/7325905.html