给角色分配菜单的功能后台代码的编写 | 学习笔记

简介: 快速学习给角色分配菜单的功能后台代码的编写

开发者学堂课程【使用 Spring Data Redis+zTree 实现授权模型的设计与思考给角色分配菜单的功能后台代码的编写学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/745/detail/13181


给角色分配菜单的功能后台代码的编写


内容介绍:

一、给角色分配菜单的功能后台代码

二、补充


一、给角色分配菜单的功能后台代码

提交后台程序的方法:module保存

*给角色分配菜单的功能

*@return

*@throws Exception

*/

@Action( "roleAction_module")

public string module( ) throws Exception {

return “alist”  返回值

添加的原因是添加保存之后,将数据分配完成后,重新跳转到角色的跳转页面,如果这么写就相当于跳转到运营。

37 @Results({ @Result(name = "alist", type = "redirectAction" , location = "roleAction _list")})返回到 alist,返回值是redirectAction" location = "roleAction _list 表示请求角色分页列表的方法,返回alist都会重定向到Alist这个方法,

//接收前端页面提交的数据

// model 模型驱动封装id值,选择属性驱动的方式封装勾选的菜单的 id 集合串

//角色的 id 值

String id = model. getId();

return "alist";

private String moduleIds;|  副id

可以提供该属性的get方法,通过属性驱动的方式就可以将属性驱动到,

//勾选的菜单的id集合串

return "alist";

private String moduleIds;

public String getModuleIds() {

屏幕截图Ctrl + Alt+ A

return moduleIds;

public void setModuleIds(String moduleIds) {

this . moduleIds = moduleIds;

程序,目的是给角色分配菜单,

//先把角色对象查询到

//再把菜单的对象查询到

//把菜单对象设置到角色的set集合中,含义:让角色拥有了这些菜单

//更新角色.

以上操作就更改了数据库

//先把角色对象查询到

Role role = roleService.get(id);

//再把菜单的对象查询到

菜单是多个菜单,假如一个个查询就比较慢,可以先进行遍历

//通过, 进行切割

String[] mids = moduleIds.split(",");

因为前段是将数据编成逗号传递过来的,所以先进行切割,切割数组,

for (String mid : mids) {  就可以查出菜单对象,

//再把菜单的对象查询到

Module module = moduleService. get(mid);

//把菜单对象设置到角色的set集合中,含义:让角色拥有了这些菜单

role.getModules() .add(module); 相当于将菜单对象加到集合中,数据就添加完成了

roleService. save0rUpdate(role);

return "alist";

程序出现了一个逻辑性的bug

@Action(" roleAction_ module")

public

String

module()

throws

Exception {

0课时3: zTree插件的入门程序

接收前端页面提交的数据

// model 模型驱动封装id值,选择属性驱动的方式封装勾选的菜单的id集合串

String id = model. getId();

先把角色对象查询到

Role role = roleService. get(id);

//通过,进行切割

String[] mids = moduleIds.split(",");

For (String mid : mids) {

//再把菜单的对象查询到

Module module = moduleService . get(mid);

//把菜单对象设置到角色的set集合中,含义:让角色拥有了这些菜单

role . getModules() .add(module);

//更新角色

roleService. save0rUpdate(role);

return "alist";


二、补充

代码中勾选了一些角色菜单,拿到之后装到集合中,装了多少就相当于选择了多少,角色原来是拥有一些菜单的,所以选择的东西相当于在原来的基础上有追加了一些东西,所以用户可能将之前选中的菜单又取消了,取消掉之后意味着集合中就不存在这些菜单了,点击系统管理,角色管理,选中之后,点击菜单,结果如下

image.png

现在选中统计分析以下的几个内容,然后取消掉委托管理,所以运行后应该存在统计分析的几个复选框,并且不会显示取消的几个菜单,运行之后,跳转到非页列表,程序没有报错,勾选之后点击菜单,发现取消掉的几个委托管理,发票管理和财务管理都还存在

image.png

造成的原因就是直接向原来的集合中追加这些菜单,但已经取消掉了,所以module应该从这些集合中将这些菜单剪掉,然后添加新的。

解决思路有两种

(1)//清空role对象的set集合

role . getModules() .clear();

(2)//第二种方式: new set集合,把菜单存入到新的set集合中,把set集合设置给role对象

跟第一种类似,需要什么集合就装什么集合,然后重新更新这种方式,

将之前拥有的全部都清掉,然后这次选择什么 重新分配就好了,

image.png

重新刷新,选择系统管理,角色管理,选择和之前一样的,点击保存之后,勾选菜单,发现没有了。这就是给角色分配代码的一个工程。

image.png

相关文章
Setup Factory 怎样让打包的程序在安装后自动运行
Setup Factory 怎样让打包的程序在安装后自动运行
321 0
|
JavaScript 前端开发 搜索推荐
|
机器学习/深度学习 算法
【数学建模竞赛】评价类赛题常用算法解析
【数学建模竞赛】评价类赛题常用算法解析
529 0
|
存储 搜索推荐 数据挖掘
使用selenium库模拟浏览器行为,获取网页的cookie值
使用selenium库模拟浏览器行为,获取网页的cookie值
|
负载均衡 监控 NoSQL
Redis系列(三):深入解读Redis主从同步机制(上)
Redis系列(三):深入解读Redis主从同步机制
|
UED
Axure中继器实战篇:让数据展示和交互设计更上一层楼!
Axure中继器实战篇:让数据展示和交互设计更上一层楼!
555 0
|
消息中间件 存储 监控
深度写作:深入源码理解MQ长轮询优化机制
【11月更文挑战第22天】在分布式系统中,消息队列(Message Queue, MQ)扮演着至关重要的角色。MQ不仅实现了应用间的解耦,还提供了异步消息处理、流量削峰等功能。而在MQ的众多特性中,长轮询(Long Polling)机制因其能有效提升消息处理的实时性和效率,备受关注。
447 12
Visio Professional 2013激活方法
Visio Professional 2013激活方法
1203 0
Visio Professional 2013激活方法
|
JavaScript
cnpm 的安装与使用
本文介绍了npm和cnpm的概念、安装nodejs的步骤,以及cnpm的安装和使用方法,提供了通过配置npm使用中国镜像源来加速包下载的替代方案,并说明了如何恢复npm默认仓库地址。
cnpm 的安装与使用
|
缓存 Java 开发者
Spring高手之路22——AOP切面类的封装与解析
本篇文章深入解析了Spring AOP的工作机制,包括Advisor和TargetSource的构建与作用。通过详尽的源码分析和实际案例,帮助开发者全面理解AOP的核心技术,提升在实际项目中的应用能力。
350 0
Spring高手之路22——AOP切面类的封装与解析