`
kongxiantao
  • 浏览: 112937 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jQuery 系统授权

阅读更多


前些天做了一个利用Jquery做了一个系统授权的东东,个人感觉不错,主要是感觉代码很精简,留个纪念吧,公司有规定,我只截了一部分吧的图片,看图直观啊


 

上代码:

 

jsp页面代码:

         <div id="listRolePermission">
            <c:forEach var="item" items="${result.map.items}">
            <div class="dialogPermissionContent">
                    <input type="checkbox" class="permission_grandpa" <c:if test="${item['selected'] eq 'selected' }">checked="checked"</c:if> />${item['key']}
                    <c:forEach items="${item['list']}" var="permission">
                    <div class="permissionFather">
                        <input type="checkbox" class="permission_father"<c:if test="${permission.selected eq 'selected' }">checked="checked"</c:if> />${permission.name}
                        <div class="permissionSon">
                        <c:forEach items="${permission['list']}" var="permissionItem">
                            <input type="checkbox" class="permission_son" value="${permissionItem.permissionId}" <c:if test="${permissionItem.selected eq 'selected' }">checked="checked"</c:if> />${permissionItem.label}
                        </c:forEach>
                        </div>
                    </div>
                    </c:forEach>
            </div>
            </c:forEach>
        </div>

js代码://这里不难,在这里真真感觉到了jQuery的强大啊,尤其是那选择器,太NX了

 

$("#listRolePermission").find("input").each(function(){
            if($(this).attr("checked") == true){
                $(this).addClass("select");
                $(this).parentsUntil("#listRolePermission").find(".permission_grandpa").attr("checked",true);
            }
        });
       
        $(".permissionFather").children().find("input").each(function(){
            if($(this).attr("checked") == true){
                $(this).addClass("select");
                $(this).parentsUntil(".permissionFather").parent().children("input").attr("checked",true);
            }
        });
       
       
       
        $(".permission_grandpa").live("click",function() {
            var flag = $(this).attr("checked");
            $(this).parent().children().find("input").each(function() {
              $(this).attr("checked", flag);
              if(flag){$(this).addClass("select");}else{ $(this).removeClass("select");}
            });
        });
       
        $(".permission_father").live("click",function() {
            var flag = $(this).attr("checked");
            var $grandpa = $(this).parent().parent();
            $(this).parent().children().find("input").each(function() {
              $(this).attr("checked", flag);
              if(flag){$(this).addClass("select");}else{ $(this).removeClass("select");}
             });
            $(this).siblings().find("input").attr("checked", flag);
            $grandpa.children("input").attr("checked", flag);
            if(!flag){
                if($grandpa.children("div").find("input").hasClass("select")){
                    $grandpa.children("input").attr("checked", !flag);
                   }else{
                       $grandpa.children("input").attr("checked", flag);
                   }
            }
        });
       
        $(".permission_son").live("click",function() {
            var flag = $(this).attr("checked");
            var $father = $(this).parent().siblings("input");
            $(this).attr("checked", flag);
            $father.attr("checked", flag);
            if(flag){$(this).addClass("select"); }else{ $(this).removeClass("select");}
            if(!flag){
                if(!$(this).siblings().hasClass("select")){
                    $father.attr("checked", flag);
                    $father.removeClass("select");
                    $("#listRolePermission").find("input").each(function(){
                        if($(this).attr("checked") == flag){
                            $(this).removeClass("select");
                            $(this).parentsUntil("#listRolePermission").find(".permission_grandpa").attr("checked",flag);
                        }
                    });
                }else{
                    $father.attr("checked", !flag);
                    $father.addClass("select");
                }
            }else{
                $father.addClass("select");
            }
            $("#listRolePermission").find("input").each(function(){
                if($(this).attr("checked") == true){
                    $(this).addClass("select");
                    $(this).parentsUntil("#listRolePermission").find(".permission_grandpa").attr("checked",true);
                }
            });
        });

 

后台处理代码:

@RequestMapping(params="action=permission") 
    public ModelAndView permission(HttpServletRequest request) throws Exception {
        ModelAndView mav = new ModelAndView(PageView.SYSTEM_ROLE_PERMISSION);
        QueryCondition conds = new QueryCondition(new Pager());
        DataResult dataResult = new DataResult();
        conds.getPager().setPageSize(conds.getPager().getTotalCount());
        QueryCondition configConds =  new QueryCondition();
        DataModelList alllist = roleService.findPermission(configConds);
        List<PermissionVO> allListP = alllist.getList();
        List<PermissionVO> listSelected =null;
        String roleIdString = request.getParameter("roleId");
        if(UtilValidate.isNotEmpty(roleIdString)){
            QueryCondition selectedConds=new QueryCondition();
            selectedConds.put("roleId",roleIdString);
            listSelected = roleService.findRolePermission(selectedConds).getList();
            dataResult.addObject("roleId",roleIdString);
        }
        List list = new ArrayList();

        //这一块处理的好啊,吴大哥就是厉害啊,就应为这个Map使jsp界面很简洁,很优雅。第一回感觉到map的强大啊
        Map<String,String> mapType = new HashMap<String,String>();
        mapType.put("系统", "system_");
        mapType.put( "***","user_");
        mapType.put("---", "club_"); 

        //初始化时,判断是否选中
        for(int k=0;k<listSelected.size();k++){
            for(int i=0;i<allListP.size();i++){
                if(listSelected.get(k).getPermissionId() == allListP.get(i).getPermissionId()){
                    allListP.get(i).setSelected("selected");
                }
            }
        }
       
        for(Map.Entry<String,String> m: mapType.entrySet()){
            Map map = new HashMap();
            List itemList = new ArrayList();
            for(int i=0;i<allListP.size();i++){
                PermissionVO permissionVO=allListP.get(i);
                if(UtilValidate.isNotEmpty(permissionVO.getCode()) && permissionVO.getCode().indexOf(m.getValue().toString())==0){
                    checkPermission(itemList,permissionVO,listSelected);
                }
            }
            map.put("key",m.getKey().toString());
            map.put("list", itemList);
            list.add(map);
        }
        dataResult.addObject("items",list);
        mav.addObject("result", dataResult);
        return mav;   
    }

//因为里面套着2个层,所以还得有两个list

private boolean checkPermission(List itemList,PermissionVO permissionVO,List<PermissionVO> listSelected){
        boolean check = false;
        List<PermissionVO> perList = null;
        for(int i=0;i<itemList.size();i++){
            Map perMap = (Map) itemList.get(i);
            perList =  (List) perMap.get("list");
            if(UtilValidate.isNotEmpty(perList)){
                if(permissionVO.getPermissionUnion().equals(((PermissionVO)perList.get(0)).getPermissionUnion())){
                    check = true;
                    if(!checkPermissionItem(perList,permissionVO)){
                        perList.add(permissionVO);
                    }
                }
            }
        }
        if(!check){
            perList =  new ArrayList();
            perList.add(permissionVO);
            Map perMap = new HashMap();
            perMap.put("list", perList);
            perMap.put("key", permissionVO.getPermissionUnion());
            perMap.put("name", permissionVO.getPermissionUnionName());
            perMap.put("id", permissionVO.getPermissionId());
            itemList.add(perMap);
        }
        return check;
    }
   
    private boolean checkPermissionItem(List<PermissionVO> itemList,PermissionVO permissionVO ){
        for(int i=0;i<itemList.size();i++){
            PermissionVO itemPermissionVO = (PermissionVO)itemList.get(i);
            if(permissionVO.getCode().equals(itemPermissionVO.getCode())){
                return true;
            }
        }
        return false;
    }

 

  • 大小: 5.9 KB
分享到:
评论

相关推荐

    基于BootCamp+JQuery+Spring的图书馆管理系统实现代码与功能文档

    本项目是基于BootCamp、JQuery和Spring框架构建的一个完整的图书馆管理系统。这个系统旨在提供一套高效、便捷的图书管理解决方案,涵盖了图书入库、借阅、归还、查询等多种功能,旨在提升图书馆的服务质量和效率。 ...

    jquery多级菜单复杂权限设置系统

    "jQuery多级菜单复杂权限设置系统"正是这样一个解决方案,它利用jQuery的灵活性和强大功能,为用户提供直观、美观且易于操作的菜单导航,并结合复杂的权限设定,确保不同用户群体能够访问到他们被授权的内容。...

    一个通用公司后台管理系统!jquery!

    ”表明这是一个基于jQuery技术构建的企业级后台管理系统,它可能包含了一系列用于处理公司日常运营、数据管理、用户交互等功能的网页应用。 描述提到使用了“vs2008+access”,这表示开发环境是Visual Studio 2008...

    jQuery UI在线模拟系统jWebOS桌面效果

    2. **安全验证**:处理用户的登录验证,确保只有授权用户才能访问jWebOS及其内容。 3. **API接口**:提供RESTful API,使前端组件能够调用后端服务,如文件上传、下载、同步等。 4. **动态内容生成**:根据用户...

    电子相册系统 Spring+hibernate+servlet+jquery

    《构建电子相册系统:Spring、Hibernate、Servlet与jQuery的深度整合》 在现代互联网应用中,电子相册系统已经成为用户存储、分享个人照片的重要平台。本系统利用Java技术栈,结合Spring、Hibernate、Servlet和...

    jquery截图并保存

    在这个上下文中,C#可能用于处理从前端发送的截图数据,并将其保存到服务器的文件系统或者数据库中。 要实现“jquery截图并保存”,通常会采用以下步骤: 1. **选取屏幕区域**:使用HTML5的Canvas元素和`...

    jQuery在线考试答题代码

    "jQuery在线考试答题代码"是利用jQuery技术实现的一种在线考试系统,旨在提供用户友好的界面和流畅的用户体验,让学生或考生能够方便地进行线上答题。 这个系统包含了多种题型,如单项选择题、多项选择题、判断题、...

    基于springboot+mybatis+layui+shiro+jquery的教务管理系统和微信小程序源码.zip

    这是一个基于SpringBoot、MyBatis、Layui、Shiro和jQuery技术栈的教务管理系统与微信小程序的源码项目,适用于毕业设计等场景。这个系统涵盖了教育机构日常管理的多个核心功能,提供了完整的前后端解决方案。下面...

    2018最新PHP+mysql域名授权查询系统,可配合第一个使用

    标题中的“2018最新PHP+mysql域名授权查询系统”指的是一个基于PHP编程语言和MySQL数据库技术构建的用于授权验证的系统。这样的系统通常用于管理软件或在线服务的许可证,确保用户在合法的域名下使用产品。它可能...

    Jquery UI 搭建的Portal

    本篇文章将深入探讨如何利用jQuery UI搭建一个Portal系统,以及如何通过用户控件实现模块化,并解决不同用户保存个性化布局的问题。 首先,让我们理解jQuery UI的核心组件。jQuery UI包括了各种UI元素,如可拖动...

    带后台jQuery galleryview幻灯片

    总结来说,"带后台jQuery galleryview幻灯片"是一个集成了前后端功能的图片展示解决方案,它利用jQuery库实现了动态幻灯片效果,与后端系统交互进行内容管理,同时具备高度的可定制性和良好的用户体验。开发者需要...

    jquery实现时间弹窗选择输入

    同时,开发者从网络上找到了这个控件,并且js文件包含了原作者的签名,这表明该代码可能是开源的或者有明确的授权协议,需要尊重原作者的工作并遵循相应的使用条款。 在提供的文件列表中,我们看到了以下三个文件:...

    jQueryEasyUI

    5. **安全框架(如Spring Security)**:结合Spring Security等安全框架,实现用户认证和授权,确保应用安全。 四、实际应用示例 一个典型的jQueryEasyUI应用可能包括以下步骤: - 使用HTML5和jQueryEasyUI的组件...

    漂亮的jquery后台管理页面

    【标题】"漂亮的jquery后台管理页面"所涉及的知识点主要集中在使用jQuery技术构建美观的后台管理系统界面。jQuery是一个高效、简洁且功能丰富的JavaScript库,它极大地简化了JavaScript代码的编写,使得网页动态交互...

    基于asp.net的后台管理系统(Bootstrap)(源码+数据库).zip

    5. 集成系统认证授权模块 6. 提供角色,部门,用户,菜单,前台应用程序授权 角色对用户授权 角色对菜单授权 角色对部门授权 角色对应用程序授权(多个前台应用公用一个后台权限管理系统) 部门对用户授权 7. ...

    smarty3+jquery+php新闻管理系统

    在新闻管理系统中,jQuery可能会用于实现如分页、新闻加载、搜索过滤等功能,提升用户的操作体验。 PHP是一种广泛使用的开源服务器端脚本语言,尤其适合Web开发。它能够与MySQL等数据库进行交互,处理用户请求,...

    jQuery手机端QQ微信微博分享插件.zip

    4. **jQuery插件**: 这个QQ微信微博分享插件是jQuery生态系统中的一个扩展,它扩展了jQuery的功能,使得开发者能够轻松添加分享功能而无需从零开始编写代码。 5. **jQuery实例**: "index.html"很可能是这个插件的...

Global site tag (gtag.js) - Google Analytics