目的:
需要将权限做如下图所示的展示:
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>
相关推荐
权限管理静态页面是指在CRM系统中,用于展示和控制用户访问权限的界面,它通常由前端开发人员利用HTML、CSS和JavaScript等技术构建,不涉及动态数据交互。下面将详细讨论权限管理的相关知识点。 1. **权限模型**:...
CMS(内容管理系统)页面设计与布局是Web开发中的重要环节,尤其在PHP环境中,它扮演着后台管理和前端展示的关键角色。本主题将深入探讨CMS页面的设计原则、布局技巧以及PHP在其中的应用。 首先,理解CMS的基本概念...
例如,使用不同的颜色或形状来区分不同级别的权限,或者通过动态效果来展示权限的增减状态。 其次,我们关注实现技术。在JavaScript(JS)环境下,可以利用前端框架如React、Vue或Angular来构建这种动态的权限分配...
在Android系统中,个人资料页面是用户展示自我、管理个人信息的重要区域。这个界面通常包括头像、昵称、联系方式、生日、性别等基本元素,有时也会包含其他自定义选项,如兴趣爱好、职业等。本篇文章将深入探讨如何...
6. **页面原型**:在设计阶段,页面原型是展示用户界面布局、功能和交互方式的初步模型。在用户权限系统中,页面原型可能会包括登录、权限设置、角色管理、用户管理等多个部分。 7. **权限分配界面**:管理员可以...
1. 分级防护:根据应用内页面的敏感程度,对不同页面采取不同程度的防截图策略,如仅对涉及支付、个人信息的页面启用防截图。 2. 用户提示:在启用防截图功能前,向用户解释原因,提高用户体验。 3. 兼容性测试:...
这种布局方式能够以多列的形式展示内容,随着页面滚动,新的内容会像瀑布一样自然下落,为用户提供连续不断的视觉体验。在PHP后台技术支持下,可以实现动态加载和数据管理,确保用户在浏览时能实时获取新内容。 PHP...
在本项目中,ExtJS4.0用于设计权限管理系统的前端页面,提供动态的数据加载、交互式操作以及自定义布局等功能。 基于角色的权限设计(Role-Based Access Control,RBAC)是一种常见的权限管理模式。系统中,权限...
首先,由于是“爬下来的静态页面”,这意味着这些页面已经完成了前端设计,不包含任何动态交互功能,主要是HTML、CSS和JavaScript的静态展示。用户可以在此基础上添加后端逻辑,将静态页面转化为动态交互的论坛系统...
页面状态布局管理是解决网络异常或数据为空时界面展示问题的有效手段。XFrame支持动态切换不同的页面状态,如加载中、数据为空、网络错误等,使得应用在各种情况下都能保持良好的视觉呈现。 权限控制是Android应用...
本文将深入探讨Web权限菜单栏的应用与展示,以及如何通过数据库进行有效管理。 首先,理解Web权限菜单栏的基本概念:它是一个动态生成的导航界面,根据用户的权限等级和角色,展示可操作的菜单选项。这些选项通常...
6. **页面展示**:页面展示主要由Spring MVC和Bootstrap共同完成。Controller处理请求后,返回一个模型视图(ModelAndView),其中包含了视图名称和数据。视图解析器会根据视图名称找到对应的JSP或HTML页面,结合...
11. **安全性**:大屏展示页面可能涉及敏感数据,因此需要考虑安全措施,如数据加密传输、权限管理等。 12. **测试与调试**:在不同环境下进行测试,确保页面在各种浏览器和设备上表现一致。利用Chrome DevTools等...
本主题聚焦于“后台菜单布局”,一种常见的技术实现是结合“ztree”和“index”页面的CSS布局。这里我们将深入探讨这两个概念以及它们如何协同工作,构建出高效且直观的后台界面。 首先,我们来了解“ztree”。...
5. **RecyclerView**:在仿微信布局中,RecyclerView是一个重要的组件,用于展示列表数据。相比于ListView,RecyclerView有更好的性能和灵活性,支持多种布局管理器,如线性布局管理器、网格布局管理器等。 6. **...
4. **页面布局与设计**:后台管理系统的界面通常包括导航菜单、操作按钮、表格展示和表单输入等元素。开发者需要熟练使用HTML和CSS来构建这些元素,并可能利用Bootstrap或jQuery UI等前端框架提升用户体验。 5. **...
在页面加载或执行特定操作前,需要进行权限校验。EasyUI不直接提供权限校验功能,但可以通过JavaScript进行实现。通常,后台会返回用户的角色及对应的权限信息,前端通过比较这些信息来决定是否允许执行某个操作。 ...
在权限管理中,ExtJS可以用于构建用户界面,如登录页面、权限分配界面等。通过组件的事件监听和数据绑定,可以实现与后端的实时交互,如动态加载用户菜单、按钮的禁用/启用状态根据权限变化等。 **项目结构** 从...
10. **响应式设计**:考虑到不同设备的显示需求,系统的页面设计应采用响应式布局,确保在手机、平板电脑和桌面电脑上都能良好显示。 11. **安全实践**:系统应遵循安全最佳实践,如防止SQL注入、XSS攻击,使用...
d2-admin是一款由Vue.js驱动的后台管理框架,它提供了一套完整的页面布局、组件、工具和示例代码,使得开发者能够快速搭建企业级后台系统。d2-admin不仅包含丰富的UI元素和交互效果,还内置了权限管理功能,非常适合...