jeecg 2.0 的菜单管理

我在测试中,发现jeecg2.0中的菜单权限控制具有缺陷,即如果某个二级菜单不选择,则一级菜单在界面上无法显示,查看程序,发现在保存角色权限时,使用的是combotree控件,当一个子树下面的叶子没有全部选择时,父级菜单不会被选中,不会保存到权限表中,这样在查询时,上级就不会被查询到。在west.jsp页面中,是判断一个菜单的cpid值=0作为一级菜单显示,这样就会存在丢失现象,根据这个现象,我再UserAction.java中的changeUserAuths方法中增加如下内容:

//获取上级auths
  //判断所有的菜单,对应的顶级上级菜单(cpid=0的菜单)也存在
  List<Auth> auths = sessionInfo.getAuths();
  List<Auth> as = new ArrayList<Auth>();
  Menu m2 = new Menu();
  m2.setId("0");
  List<Menu> menus = menuService.treegrid(m2);
  for (Auth a:auths){
   if ("0".equals(a.getCid()) || "0".equals(a.getCpid())) continue;
   System.out.println("1auth "+a.getCid()+" "+a.getCname());
   boolean flag = false;
   for (Auth b:auths){
    if (a.getCpid().equals(b.getCid())) {
     flag = true;
     break;
    }
   }
   System.out.println("2auth "+a.getCid()+" "+a.getCname());
   if (flag == false){
    for (Menu m:menus){
     if (a.getCpid().equals(m.getCid())){
      boolean flag2 = true;
      for (Auth t:as){
       if (t.getCid().equals(m.getCid())){
        flag2 = false;
        break;
       }
      }
      if (flag2 == false) break;
      Auth e = new Auth();
      //----------------------------
      //菜单权限
      e.setCid(m.getCid());
      //----------------------------
      e.setCname(m.getCname());
      e.setCurl(m.getCurl());
      e.setCiconCls(m.getCiconcls());
      e.setCpid(m.getCpid());
      e.setCpname("cjg");
      
      as.add(e);
      System.out.println("3auth "+e.getCid()+" "+e.getCname());
     }
    }
   }
  }
  for (Auth a:as) auths.add(a);
  System.out.println("get auths");

增加被丢失的一级菜单,保证菜单能正常、正确显示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值