现在项目里有这个需求:用户登录的时候可以选择不同的角色,每个角色对应着各种不同的权限,这些权限决定了要给用户显示哪些菜单。
我是这样实现的:首先将用户登录后的权限信息和这些权限可以显示的菜单项一起封装在userinfo里设到session里面,
界面上js里事先设定好了各种权限和菜单对象,并且每个对象都用一个boolean型开关来标识,JS从传过来的权限和菜单项中取出该用户的权限和菜单数组,把对应的boolean值改成true,接下来再把菜单的boolean开关是true的添加到toolbar上,权限也是一个样子(对应菜单的子项),这样菜单就动态的生成好了。
这样做的缺点是后期维护起来不好,因为菜单项和权限都事先写死在js里面了,要想修改的话必须一个一个改,但是如果将菜单的生成全都拿到服务端来做又觉得界面和服务耦合在一起了,服务做了太多的事,我一直认为界面的东西就应该全交给html和JS来做,尤其是现在有了EXT这么好的客户端组件库。不知道有没有更好的解决办法
js代码例如:
js 代码
-
- var bbusmenu=false;
-
- var bportalmenu=false;
-
- var bcriterionmenu=false;
- .....
-
- for (i=0;i
- var m=menulist[i];
- switch(m)
- {
- case '1':
- bbusmenu=true;
- break;
- case '2':
- bportalmenu=true;
- break;
- case '3':
- bcriterionmenu=true;
- break;
- ......
-
-
- var busmenu=new Ext.menu.Menu({
- id:'busMenu',
- items:[
- {text:'总线维护',
- handler: onItemClick
- },
- {
- text:'总线互访配置',
- handler:onItemClick
- }
- ]
- });
-
- var portalmenu=new Ext.menu.Menu({
- id:'portalMenu',
- items:[
- {text:'接入点维护',
- handler: onItemClick
- },
- {text:'接入点挂接总线配置',
- handler: onItemClick
- }
- ]
- });
-
- var criterionmenu=new Ext.menu.Menu({
- id:'criterionMenu',
- items:[
- {text:'规约维护',
- handler: onItemClick
- }]
- });
- ......
- var tb = new Ext.Toolbar();
- tb.render('toolbar');
- if(bbusmenu){
- tb.add(
- new Ext.Toolbar.MenuButton({
- text: '总线管理',
- handler: onButtonClick,
- tooltip: {text:'This is 总线', title:'Tip Title', autoHide:false},
- iconCls: 'blist',
- menu : busmenu
- }), '-');
- }
- ......
这样一大坨就下来了....
分享到:
相关推荐
在Web应用中,动态生成菜单树可以根据用户权限、角色或者业务需求动态地展示不同的菜单选项。 1. 数据库设计: 为了存储菜单信息,我们通常会创建一个`menus`表,包含字段如`id`(主键),`name`(菜单名),`parent_...
2. **编写SQL查询**:根据用户的角色或权限,查询出用户有权访问的所有菜单项。可能需要考虑递归查询,以获取所有子菜单。 3. **处理数据**:Java代码将查询结果转换为树形结构的数据模型,如`MenuItem`类,该类...
动态生成菜单可以从数据库中获取数据,根据用户权限、业务需求或系统配置实时构建菜单结构,提供更灵活、个性化的用户体验。下面我们将深入探讨这个话题。 首先,让我们理解“动态生成菜单”的概念。在传统的Web...
在这个场景中,我们关注的是如何利用Shiro实现根据用户权限动态显示不同的菜单。 首先,理解Shiro的核心概念是关键。在Shiro中,权限分为角色(Role)和权限(Permission)。角色是一组权限的集合,权限则具体描述...
动态生成菜单的过程包括从数据库查询用户的角色和相应的操作权限,然后根据这些信息构建菜单结构。 VCLSkin控件是这个过程中的一个重要工具,它不仅提供了丰富的皮肤样式,还能与Delphi的其他组件无缝集成。在动态...
通过动态生成菜单,可以根据用户的权限、应用的状态或配置文件的变化来自定义显示哪些菜单项。这种方式不仅提高了应用程序的灵活性,也便于维护。 #### 二、关键技术点 1. **MenuStrip 控件**: 这是一个用于创建...
本篇将详细阐述如何从数据库中读取数据,根据用户权限动态生成menu菜单栏。 首先,我们要理解数据库读数据的基本原理。在Web应用程序中,通常会使用SQL(Structured Query Language)来与数据库交互。通过执行查询...
- 功能模块的增减:如果应用程序包含可选功能模块,动态生成菜单可以根据用户的选择或配置加载相应的菜单项。 - 系统状态响应:根据应用程序的状态(如网络连接、数据加载状态等)动态显示或隐藏菜单项。 3. **...
- **菜单权限控制**:根据用户角色动态生成显示的菜单,隐藏无权访问的功能。 - **按钮权限控制**:针对具体操作,如添加、删除、修改等,控制按钮的可见性和可用性。 - **数据过滤**:在数据列表展示时,根据用户...
在VB(Visual Basic)编程中,动态生成菜单是一项重要的技能,尤其在开发大型软件项目时。这个"VB 根据表中数据动态生成菜单.rar"的压缩包文件提供了一个示例,展示了如何利用VB从Access数据库中读取数据来创建菜单...
根据用户的权限级别,可以动态决定显示哪些菜单项,隐藏那些超出权限范围的选项。 5. **灵活性**: 这种动态生成菜单的方法增加了应用的灵活性,使得UI能够随着应用需求的变化而变化,而无需每次都重新编译和部署...
动态生成菜单是Windows应用程序设计中常见的需求,尤其是在用户权限管理、多角色操作或者需要根据数据动态调整菜单结构的应用场景下。`DemoMenu(动态生成菜单)_winform_`这个项目就是针对这种需求的一个示例,它展示...
在IT领域,动态菜单生成和自动生成菜单是一个重要的实践应用,尤其在开发Web应用程序时,这一功能能够极大地提高用户体验和管理效率。动态菜单基于用户的权限、角色或特定条件进行生成,使得用户界面更加灵活和定制...
动态菜单可以根据用户的权限、操作环境或者应用状态自动生成,提供个性化的用户界面。本示例将深入讲解如何实现一个动态生成菜单的组件,并结合XML文件进行数据驱动,以实现更灵活的配置。 首先,动态生成菜单组件...
在用户成功登录后,系统需要根据用户的权限信息来展示可操作的菜单。这通常涉及到角色-权限-资源的模型设计。在Spring中,可以使用Security模块进行权限控制,通过定义角色和权限,然后关联到用户。在Struts2中,...
标题“003根据表中数据动态生成菜单”指的是通过读取数据库中的表格数据,根据这些数据来动态构建用户界面(UI)上的菜单结构。下面将详细介绍这一知识点及其相关技术。 首先,我们要理解菜单的基本概念。菜单是...
动态菜单的优势在于,它允许开发者在运行时根据用户角色、权限或特定条件来构建和调整菜单结构,而不是在编译时硬编码。 描述进一步指出,这些菜单项的定义存储在数据库中。这种做法提高了程序的可维护性,因为菜单...
VUE-router.addRoutes根据后台接口传递数据生成动态路由,前端拿到配置并生成侧边栏-实现页面级权限控制。 ----------------------------------------------- 登陆成功之后直接由后端返回异步路由表,然后前端直接...
动态生成菜单是指在运行时根据不同的条件或需求实时创建或修改菜单结构。这对于需要根据不同用户权限展示不同菜单选项的应用非常有用。 1. **核心思路**:利用PowerBuilder提供的`Menu`对象及其属性`Item[]`,结合...
例如,可以通过调整XML结构来增加、删除或修改菜单项,或者根据用户权限动态生成菜单。同时,抽屉式的导航设计既节省了屏幕空间,又提供了良好的可用性,尤其在移动设备上。 文件名为“leftbar”的可能是一个包含该...