热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

权限目录树的实现

*权限模块1)角色和权限的关系:多对多2)权限有上下级关系如上所示是权限,角色与用户的对应关系,一个用户可以承担多中角色。一种角色对应多个
* 权限模块
1)角色和权限的关系:多对多
2)权限有上下级关系

如上所示是权限,角色与用户的对应关系,

  • 一个用户可以承担多中角色。
  • 一种角色对应多个权限。
  • 一个权限可以被多种角色拥有。
  • 一个权限可能拥有多个子权限。


* 权限对应的是某个功能,功能对应的是请求URL
* 设计权限实体


* 开发权限模块步骤
1)设计权限实体并编写hbm映射文件生成表
2)通过一个SQL脚本导入权限数据
3)为角色分配权限
4)使用jQuery的treeview插件展示权限树
* 导入插件所需资源




* 通过ul和li标签展示数据

* 调用插件的treeview方法生成树


5)权限树的选中效果
当选中某个权限时,同时选中其下级权限,当取消某个权限时,同时取消其下级权限
$(this).siblings('ul').find('input').attr('checked',this.checked);


当选中某个权限时,同时选中其直接上级权限
$(this).parents('li').children('input').attr('checked',true);


当取消某个权限时,如果同级权限都没有选中,则取消其上级权限
var size = $(this).parent('li').siblings('li').children('input:checked').size();
if(size == 0){
$(this).parent().parent().siblings('input').attr('checked',false);

}


例子:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib prefix="s" uri="/struts-tags" %>




    
	
    
    
    
	
	
	
	
	
	

    




配置权限
正在为【${name}】配置权限
    value="${id}" type="checkbox" name="pre_id"/>
  • value="${id}" type="checkbox" name="pre_id" />${name}
    • value="${id}" type="checkbox" name="pre_id" />${name}

说明:
1,选中一个权限时:
     a,应该选中 他的所有直系上级。
     b,应该选中他的所有直系下级。
2,取消选择一个权限时:
     a,应该取消选择 他的所有直系下级。
     b,如果同级的权限都是未选择状态,就应该取消选中他的直接上级,并递归向上做这个操作。
3,全选/取消全选。
4,默认选中当前岗位已有的权限。




推荐阅读
author-avatar
手机用户2602905817_973
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有