反人类设计方式(通过循环提交form表单来实现给角色授权)
这里不贴出反人类设计的实现代码。只说存在问题以及小编完成功能的思路。
反人类设计原理(错误):通过点击授权按钮是后台做两步操作,第一:删除掉这个用户原来有的所有权限,第二根据点击授权按钮传递过去的勾中的选项去重新给用户授权。
设计到的问题点: 前端页面传递的时你选中的数组。(看不懂下面图片的自己去Element官网看树形组件树节点的选择)
反人类思想设计的实现方法:(不可取)
由于前端页面可以过去到我们需要的数组,所有可以获取到数组中的全部内容以及数组的长度。通过循环提交form表单实现里面的每一个数据都去增加一次。(本身存在问题:循环提交form是错误的,没此提交一个form表单时需要反应时间的。循环提交form表单会存在有的数据没有提交成功下一个表单就提交了,会导致数据缺失)
正常设计方案
前端得到的数据还是数组,这里直接将数组传递到后台,在后台去掉中间的,然后传递到sql方法中。避免了循环提交form表单
贴后端代码:
SRoleMenuMapper.xml
<!--增加-->
<insert id="add" parameterType="java.util.Map">
insert into ssm_role_menu(roleid, id) values
<foreach collection="id" item="item" index="index" separator=",">
(#{rid},#{item})
</foreach>
</insert>
SRoleMenuController
package com.onlyK.ssm.controller;
import com.onlyK.ssm.service.SRoleMenuService;
import com.onlyK.ssm.util.JSONResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @author only老K
* @create 2019-12-13 18:48
*/
@Controller
@RequestMapping("/sRoleMenu")
public class SRoleMenuController {
@Autowired
private SRoleMenuService sRoleMenuService;
@RequestMapping("/add")
@ResponseBody
public JSONResult add(HttpServletRequest req){
//增加权限之前需要将原来的权限删除掉
int roleid=Integer.parseInt(req.getParameter("roleid"));//获取前台需要进行处理的对象
sRoleMenuService.deleteByRoleid(roleid);//删除用户的权限
//获取到前台传递过来的权限数组,前台需要做处理JSON.stringify(this.$refs.tree.getCheckedKeys()) 这个方法已作废,更改方法为,前台通过循环把数据传递到后台
String menuid =req.getParameter("menuid");//查询到了需要授权的id ,但是想要显示效果
String [] sa=menuid.split(",");
this.sRoleMenuService.add(roleid,sa);
return JSONResult.ok();
}
}
贴前端代码:(中间注释掉的就是反人类设计方案。可以稍微看看)
<template>
<div>
<!-- 搜索筛选 -->
<el-form :inline="true" :model="formInline" class="user-search">
<el-form-item label="搜索:">