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之七 判断点击了鼠标哪个键的代码
Jun 21 Javascript
JavaScript把数组作为堆栈使用的方法
Mar 20 Javascript
Jquery实现瀑布流布局(备有详细注释)
Jul 31 Javascript
jquery心形点赞关注效果的简单实现
Nov 14 Javascript
js实现一个简单的数字时钟效果
Mar 29 Javascript
jQuery实现点击关注和取消功能
Jul 03 jQuery
Vue学习笔记进阶篇之过渡状态详解
Jul 14 Javascript
老生常谈JavaScript面向对象基础与this指向问题
Oct 16 Javascript
vue组件父子间通信详解(三)
Nov 07 Javascript
JavaScript插件Tab选项卡效果
Nov 14 Javascript
开发Vue树形组件的示例代码
Dec 21 Javascript
微信小程序自定义组件实现tabs选项卡功能
Jul 14 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
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
领悟php接口中interface存在的意义
2013/06/27 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
jquery animate 动画效果使用说明
2009/11/04 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
几行js代码实现自适应
2017/02/24 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
Python进阶之全面解读高级特性之切片
2019/02/19 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
python实现mean-shift聚类算法
2020/06/10 Python
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
英国在线药房:Express Chemist
2019/03/28 全球购物
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
招商经理岗位职责
2013/11/16 职场文书
自荐信封面
2013/12/04 职场文书
情况说明书格式范文
2014/05/06 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
安全员岗位职责范本
2015/04/11 职场文书
企业团队精神心得体会
2016/01/19 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏
Java 轮询锁使用时遇到问题
2022/05/11 Java/Android
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS