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

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

开发者学堂课程【使用 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 怎样让打包的程序在安装后自动运行
291 0
|
JavaScript 前端开发 搜索推荐
|
UED
Axure中继器实战篇:让数据展示和交互设计更上一层楼!
Axure中继器实战篇:让数据展示和交互设计更上一层楼!
392 0
|
11月前
|
消息中间件 存储 监控
深度写作:深入源码理解MQ长轮询优化机制
【11月更文挑战第22天】在分布式系统中,消息队列(Message Queue, MQ)扮演着至关重要的角色。MQ不仅实现了应用间的解耦,还提供了异步消息处理、流量削峰等功能。而在MQ的众多特性中,长轮询(Long Polling)机制因其能有效提升消息处理的实时性和效率,备受关注。
378 12
Visio Professional 2013激活方法
Visio Professional 2013激活方法
1030 0
Visio Professional 2013激活方法
|
分布式计算 大数据 数据处理
「大数据」Kappa架构
**Kappa架构**聚焦于流处理,用单一处理层应对实时和批量数据,消除Lambda架构的双重系统。通过数据重放保证一致性,简化开发与维护,降低成本,提升灵活性。然而,资源消耗大,复杂查询处理不易。关键技术包括Apache Flink、Spark Streaming、Kafka、DynamoDB等,适合需实时批量数据处理的场景。随着流处理技术进步,其优势日益凸显。
653 0
「大数据」Kappa架构
|
前端开发 JavaScript CDN
前端实现打字机的效果 -- typed库的使用
typed.js是一款轻量级JavaScript插件,模拟打字机效果,用于网页文本的动画输入。特点是易用、高度可配置,支持多种动画模式且无依赖。配置包括字符串、速度、显示延迟、循环选项等。安装可通过NPM或CDN。使用时在HTML中添加`<span>`标签,然后在JS中实例化Typed对象。丰富的回调函数可用于自定义行为。适用于展示性和个人博客网站,增加互动性。尝试不同配置,创建独特动态文本效果。
660 0
|
移动开发 开发工具
解决微信H5获取SDK授权报错提示errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20200908 22:17:17][]“
解决微信H5获取SDK授权报错提示errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20200908 22:17:17][]“
解决微信H5获取SDK授权报错提示errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20200908 22:17:17][]“
|
NoSQL Linux Redis
本地虚拟机centos7通过docker安装主从redis3.2
本地虚拟机centos7通过docker安装主从redis3.2
226 0
|
存储 消息中间件 API