目的:
需要将权限做如下图所示的展示:
1. 数据库表结构
表名: ss_permission
ID VARCHAR2(32) PRIMARY KEY, DISPLAY_NAME VARCHAR2(500), NAME VARCHAR2(300), PARENT_ VARCHAR2(32) LEAF_ VARCHAR2(1)
2. 表数据
其中,parent_ 为空,表示是父权限。
3. 表对应的实体类 SsPermission.java
import java.io.Serializable; import java.util.List; public class SsPermission implements Serializable { /** * @Fields serialVersionUID : 序列化id */ private static final long serialVersionUID = 3410077426635038417L; private String id; private String displayName; private String name; private String parent_; private String leaf_; // 子权限集合 private List<SsPermission> childs; // 省略 setter/getter }
由于需要展示父权限及其子权限,所以实体类中需要有一个子权限集合的属性。
4. 实现思路
首先,查询出所有的父权限信息
public List<SsPermission> findAllParents() throws Exception { List<SsPermission> list = new ArrayList<SsPermission>(10); StringBuffer sql = new StringBuffer(100); sql.append("SELECT ID, NAME, DISPLAY_NAME, PARENT_ "); sql.append(" FROM SS_PERMISSION "); sql.append(" WHERE (PARENT_ IS NULL OR PARENT_ = '') "); sql.append(" AND LEAF_='0'"); list = getJdbcTemplate().query(sql.toString(), new RowMapper<SsPermission>() { @Override public SsPermission mapRow(ResultSet rs, int index) throws SQLException { SsPermission p = new SsPermission(); p.setId(rs.getString("ID")); p.setName(rs.getString("NAME")); p.setDisplayName(rs.getString("DISPLAY_NAME")); p.setParent_(rs.getString("PARENT_")); return p; } }); return list; }
其次,循环父权限,根据父权限id查找其所有的子权限,将结果存入子权限集合childs中。
public List<SsPermission> findChildsById(final String permissionId) throws Exception { List<SsPermission> list = new ArrayList<SsPermission>(10); StringBuffer sql = new StringBuffer(100); sql.append("SELECT ID, NAME, DISPLAY_NAME, PARENT_ "); sql.append(" FROM SS_PERMISSION "); sql.append(" WHERE PARENT_ = ?"); list = getJdbcTemplate().query(sql.toString(), new Object[] { permissionId }, new RowMapper<SsPermission>() { @Override public SsPermission mapRow(ResultSet rs, int index) throws SQLException { SsPermission p = new SsPermission(); p.setId(rs.getString("ID")); p.setName(rs.getString("NAME")); p.setDisplayName(rs.getString("DISPLAY_NAME")); p.setParent_(rs.getString("PARENT_")); return p; } }); return list; }
总的实现方法如下所示:
import java.util.ArrayList; import java.util.List; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @RequestMapping("/toSelectPermission") public String toSelectPermission(Model model) { // 父权限 List<SsPermission> permissions = new ArrayList<SsPermission>(10); try { // 查找所有的父权限 List<SsPermission> parents = permissionService.findAllParents(); if (null != parents && !parents.isEmpty()) { SsPermission per = null; for (SsPermission p : parents) { per = new SsPermission(); per.setId(p.getId()); per.setName(p.getName()); per.setDisplayName(p.getDisplayName()); // 根据父权限id查找对应的子权限 per.setChilds(permissionService.findChildsById(p.getId())); permissions.add(per); } } } catch (Exception e) { log.error("Go to SelectPermission page fail:" + e.getMessage(), e); } model.addAttribute("permissionList", permissions); return "security/selectPermissions"; }
5. jsp 页面展示
<style type="text/css"> .clearfix{zoom:1;} .clearfix:after{content:′.′;display:block;visibility:none;height:0;clear:both;} #bd{/*background-color:#DDD;*/min-height:50px;_height:50px;} #bd .right{/*background-color:red;*/float:right;width:100%;margin-left:-25em;} #bd .right .content{margin-left:100px;/*background-color:blue;color:#FFF;*/} #bd .left{/*background-color:green;color:#FFF;*/width:260px;float:left;} </style> <body> <table align="center" class="bordered" border="0"> <c:forEach items="${permissionList }" var="parentPer" varStatus="status"> <tr> <td> <div class="left"> <p>${parentPer.displayName }: </p> </div> </td> <td> <div class="right"> <div class="content"> <p> <c:forEach items="${parentPer.childs }" var="childPer" varStatus="status"> <input type="checkbox" id="" name="child_name" value="${childPer.id }"/>${childPer.displayName } </c:forEach> </p> </div> </div> </td> </tr> </c:forEach> </table> </body>
相关推荐
布局方面提供左右布局和上下布局两种,可自由切换;系统内置了3套主题,可随意切换;还有一些后台管理系统常用的功能如表单,表表等; 测试账号 过一段时间后才发现忘记放测试账号和密码了,哈哈哈 1. 用户名:admin...
各种发布和管理功能均采用人性化的AJAX技术,避免页面刷新,具有良好的用户体验。 八、灵活的管理权限和会员权限配置 后台可设置多名管理员,自由配置各项管理权限。数十种细分的会员权限项目,可以按会员类型配置...
YiiCms企业站管理系统简介 YiiCms 企业站管理系统,使用 PHP MySQL ,基于 Yii2 框架开发完成,页面采用 Bootsrap 3.0 前端样式,支持 PC 、手机...YiiCms企业站管理系统页面展示 相关阅读 同类推荐:站长常用源码
这些页面包括用户管理、角色管理、权限管理、文章管理等,每个页面都经过精心设计,并包含了表格、表单、按钮和其他页面元素,以满足你的需求。 可复用组件:为了增加代码的可维护性和重用性,我们还提供了一些可...
主页面(按照权限展示):左边侧边栏:考勤管理,请假管理,统计分析,班级管理,个人中心 管理员:所有功能都展示,加上可以添加,修改,删除学生,老师,辅导员,院领导; 考勤统计分析:按照班级展示,用图表展示出...
基于asp.net(C#)MVC+前端bootstrap+ztree+lodash+jquery技术,采用bootstrap为前台开发展示UI,Web Api主要负责前端的逻辑交互,再结合jQuery Ajax+Web Api进行提交数据请求。 AngelRM_MVC通用权限管理系统特色 1、...
vue版本请访问一个Angular + Spring Boot前一级分离基础...支持皮肤更换,目前系统自带三套皮肤(一套上下布局,一套左右布局,一套上左右布局可查看下面的“系统部分页面展示”部分),可根据自己的喜好配置less,定
本资源是一套基于SSM(Spring、SpringMVC、MyBatis)框架开发的学院党员管理系统,并结合JSP技术进行前端页面展示。这是一套功能完善、结构清晰、易于维护和扩展的党员管理解决方案,旨在帮助学院实现对党员信息的...
本资源是一个基于SSM(Spring+SpringMVC+MyBatis)框架与MySQL数据库的多角色学生管理系统,前端使用JSP进行页面展示。此项目不仅是一个完整的毕业设计作品,而且包含源代码,为学习和实践SSM框架及多角色权限管理...
页面js使用Jquery1.6 ,在界面的右端展示了增删改查操作,并且界面布局使用的是div的布局方式。这是今天 在一家公司做上机试题的时候的一个代码,花了3个小时完成的全部内容,并且调试通过。 由于上传权限不足,将...
**具体模块的实现:**轮播图与招聘车队的展示、赛事规则与精彩十佳球的查看、赛赛车队人员信息的查看、流程页面采用触底页进行渲染、用户登录基于jwt+token认证,登录成功后可搜索用户进行关注、修改资料、查看战绩...
asp.net mvc 通用权限管理系统(响应布局)源码是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash+jquery技术,采用bootstrap为前台开发展示UI,Web Api主要负责前端的逻辑交互,再结合jQuery Ajax+Web Api进行提交...
整洁、大气的界面,简单实用的操作,可供专业人士使用,也可以从未涉及过网络的人士使用,简单设置(甚至可以不用设置)如一键完成,复杂设置如页面重新布局,都可随心所欲操作。 1、系统分access/mssql两种语言...
该系统的开发是以myeclipse8.6作为开发平台,应用JSP技术...它主要是完成框架左侧的展示工作,同时在单击左边不同的链接的时候,在框架的中部显示不同的收集数据的页面。这样设计的目的是:以后需要修改框架左侧页面
具有自定内容、分组网页、新闻文章、图片展示、产品展示、视频展 示、文件下载、友情链接、广告管理等网站内容管理功能模块;会员管理、网友点评、留言反馈、人才招聘等互功能模块;更有网上购物、在线订餐、展会...
05-RBAC-分配权限表单展示 06-RBAC-角色分配权限-收集表单信息 07-RBAC-显示默认拥有的权限 08-RBAC-权限列表展示 09-RBAC-添加权限实现 10-RBAC-访问权限控制 11-RBAC-禁止未登陆用户访问系统 12-RBAC-tp框架使用...
具有自定内容、分组网页、新闻文章、图片展示、产品展示、视频展 示、文件下载、友情链接、广告管理等网站内容管理功能模块;会员管理、网友点评、留言反馈、人才招聘等互功能模块;更有网上购物、在线订餐、展会...
本系统可以专业人士使用,也可以从未涉及过网络的人士使用,上传即可,简单设置(甚至可以不用设置)一键完成,复杂设置如页面重新布局,都可随心所欲操作。 1、系统分access/mssql两种语言版本,仅10M空间即可以...
整体页面设计简洁清晰,用户友好,同时实现了响应式布局,兼容不同终端设备。该项目旨在帮助毕业生熟悉和掌握springboot框架的开发方式,以及前后端技术的整合与应用。通过该项目的学习和实践,毕业生将能够掌握项目...
权限管理:自定义配置用户可使用的功能,分别给予权限。 可拖拽DIY:APP设计制作一站式解决方案,创造出独一无二的专属小程序。无需懂代码,都可以借助DIY官网可视化工具,顷刻间打造自已的个性化移动应用。 多...