crud多显框回显

本人最近在做项目的时候做多显框回显的时候发现了一些问题,在这里简单说一下,希望大家能受用
三表多对多 role角色表 role_auth中间表 auth权限表

在list页面 点击授权按钮带role的id 跳转controller分支 
<input type="button" value="授权" "sq(${r.rid})">
<script type="text/javascript">
function sq(rid){
    location="<%=path%>/getalistByRid.do?rid="+rid;
    }
   </script>

进入controller 根据role的id找到对应的权限
@RequestMapping("getalistByRid.do")
 public String getalistByRid(Integer rid, Model model) {
 //同时进入list页面 list表跟多显框同时显示
 List list = rs.list();
  model.addAttribute("list", list);
  //查询所有的权限
  List list2 = rs.selAuth();
  model.addAttribute("list2", list2);
  //根据role的rid找到匹配的权限
  //在这里着重说一下 List的泛型很重要 如果不写 默认是object
  List<Role> alist = rs.getalistByRid(rid); //最外层Role
  List<Auth> getaList = alist.get(0).getaList();//里层是匹配的权限集合
  //因为Role中只有一个元素  所以用alist.get(0) 继续.getaList()才能得到 有点麻烦 所以一定要仔细审题
  
  //下面是遍历权限集合的过程 在本题中用不到  只是看一下
  for (Auth auth : getaList) {
   System.out.println(auth);
   System.out.println(auth.getAid());
  }


model.addAttribute("getaList", getaList);
  return "list";
  }

接下来是mapper.xml中的sql语句

1.是通过三表联查 根据角色的rid查出匹配的权限
<select id="getalistByRid" resultMap="rMap" parameterType="int">
select b.* from (select * from t_role_auth where rid = #{rid}) a left join t_auth b on  a.aid = b.aid
</select>

2.是查出所有的权限
<select id="selAuth" resultType="Auth">
 select * from t_auth
 </select>


最后通过Model传回list页面
在外层先遍历所有的权限
 <c:forEach  items="${list2 }" var="a">
 //复选框 在复选框中遍历role的rid匹配的权限
<input type="checkbox" name="checkOne" value="${a.aid }"

<c:forEach items="${getaList }" var="g">
//如果role的id匹配权限的id 那么就checked
    ${a.aid==g.aid?'checked':'' }
    </c:forEach>
    >${a.aname }<br>
 </c:forEach>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值