etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例


Posted in Javascript onNovember 09, 2016

基于角色的权限管理一般有5张表构成,如下图,这里我们要实现对角色role进行授权操作,简单来说就是要对rolemenu进行添加操作,这里前端主要用easyui-combobox来实现权限多选。etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例

总体思路是先初始化combobox,绑定所有的权限;然后根据当前的角色获取该角色已经拥有的权限,设置combobox选中这些权限;最后修改好权限了,获取combobox的选中值发送到后端进行保存。

1、控件初始化
先是前端html,设置combobox的value是角色id,text是角色name,代码如下:

<table class="grid"> 
<tr> 
<td colspan="2"><input id="id" name="id" type="hidden" /> 
</td> 
</tr> 
<tr> 
<td>角色名称:</td> 
<td><input name="roleName" class="easyui-validatebox" 
readonly></input></td> 
</tr> 
<tr> 
<td>角色权限:</td> 
<td><select id="roleRight" class="easyui-combobox" 
name="roleRight" 
data-options=" 
url:'/ciccpsMember/menu/getAllMenus', 
editable:false,required:true, 
valueField:'menuid', 
textField:'menuname', 
multiple:true, 
panelHeight:'100'"> 
</select></td> 
</tr> 
</table>

后端获取系统所有的权限,也就是menu表的记录,代码如下:

public JsonView getAllMenus() throws Exception{ 
 List<Menu> menus = Menu.findAll(Menu.class); 
 
 return new JsonView(menus); 
}

2、获取角色当前拥有的权限

前端JS脚本获取当前角色role的id发送到后端获取该角色拥有的权限的id数组,如下:

function newAuthorize(){ 
 var row = grid.datagrid('getSelected'); 
 if (row){ 
 win1.window('open'); 
 form1.form('load',row); 
 $.post('/ciccpsMember/role/getMenusByRid', { id:row.id}, 
  function(result) { 
   if (result) { 
    //获取权限menu的id 
    var t=[]; 
    jsonList=result.rows; 
    for(var i=0;i<jsonList.length;i++){ 
    t[i]=jsonList[i].muid; 
    } 
    $('#roleRight').combobox('setValues',t);//设置combobox的选中值 
   } else { 
   $.messager.alert('错误','出错了','error'); 
   } 
  },'json'); 
 //form.form('load', '/ciccpsMember/admin/getAdminById/'+row.id); 
 //form1.url = '/ciccpsMember/role/authorize/?id='+row.id; 
 } else { 
 $.messager.show({ 
  title:'警告', 
  msg:'请先选择信息记录。' 
 }); 
 } 
}

后端根据前端传来的role的id查询数据库获取对应的权限id返回给客户端,代码如下:

//根据角色返回权限id 
public JsonView getMenusByRid(Integer id) throws Exception { 
 List<Rolemenus> rolemenuss = Rolemenus.findAll(Rolemenus.class, "rid =?", new Object[]{id}); //根据角色id在rolemenu表中获取权限id 
 
 //构造JSON用的数据结构并返回JSON视图 
 Map<String, Object> result = new HashMap<String, Object>(); 
 result.put("rows", rolemenuss); 
 return new JsonView(result); 
}

3、提交修改后的角色权限

前端JS脚本获取combobox选中的值发送到后端,记住对combobox值进行escape编码,要以1%2C2%2C3的形式传送,否则到后端就剩一个值了,代码如下:

function authorize(){ 
 var id=$('#id').attr("value"); 
 var r = $('#roleRight').combobox('getValues'); 
 var rr=escape(r); 
 //$.messager.alert('错误',id+'ddd'+rr,'error'); 
 $.post('/ciccpsMember/role/authorize', { id:id,rr:rr }, 
  function(result) { 
   if (result.success) { 
   win1.window('close'); 
   $.messager.show({ 
   title:'提示', 
   msg:'角色授权成功。' 
   }); 
   } else { 
   $.messager.alert('错误',result.msg,'error'); 
   } 
  },'json'); 
 
}

后端获取前端传过来的值,进行数据库操作,代码如下:

/** 
 * 授权操作 
 */ 
public JsonView authorize(Integer id,String rr) throws Exception { 
 
 //删除旧的 
 Rolemenus.destroyAll(Rolemenus.class, "rid =?", new Object[]{id}); 
 
 //追加新的 
 String[] ary = rr.split("%2C"); 
 Rolemenus rm=null; 
 for(String item: ary){ 
 //System.out.println(item); 
 rm=new Rolemenus(); 
 rm.setRid(id); 
 rm.setMuid(Integer.parseInt(item)); 
 rm.save(); 
  
 } 
 return new JsonView("success:true"); 
}

至此,角色授权就实现了,主要有两点要注意,一是对combobox赋多个值的问题,另一个就是获取combobox多个值(1,2,3)后要进行escape编码后再传到后端。效果图如下:etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
Dec 02 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
Apr 02 Javascript
Windows8下搭建Node.js开发环境教程
Sep 03 Javascript
深入剖析javascript中的exec与match方法
May 18 Javascript
Angularjs CURD 详解及实例代码
Sep 14 Javascript
Javascript 动态改变imput type属性
Nov 01 Javascript
BootStrap selectpicker后台动态绑定数据
Jun 01 Javascript
使用angular帮你实现拖拽的示例
Jul 05 Javascript
JS非空验证及邮箱验证的实例
Aug 11 Javascript
switchery按钮的使用方法
Dec 18 Javascript
Vue下路由History模式打包后页面空白的解决方法
Jun 29 Javascript
vue 点击按钮实现动态挂载子组件的方法
Sep 07 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
Nov 09 #Javascript
微信小程序 loading 详解及实例代码
Nov 09 #Javascript
微信小程序 toast 详解及实例代码
Nov 09 #Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
Nov 09 #Javascript
微信小程序  modal详解及实例代码
Nov 09 #Javascript
微信小程序  action-sheet详解及实例代码
Nov 09 #Javascript
浅谈EasyUI常用控件的禁用方法
Nov 09 #Javascript
You might like
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
javascript网页关键字高亮代码
2008/07/30 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
详解微信小程序 页面跳转 传递参数
2016/12/08 Javascript
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
Element Notification通知的实现示例
2020/07/27 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
Python实现获取网站PR及百度权重
2015/01/21 Python
不要用强制方法杀掉python线程
2017/02/26 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
解决Python二维数组赋值问题
2019/11/28 Python
Pytorch: 自定义网络层实例
2020/01/07 Python
CSS3 Backgrounds属性相关介绍
2011/05/11 HTML / CSS
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
大学生饮食配送创业计划书
2014/01/04 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
团日活动总结报告
2014/06/25 职场文书
财务管理专业自荐书
2014/09/02 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL