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 获取json数据实现代码
Apr 27 Javascript
前后台交互过程中json格式如何解析以及如何生成
Dec 26 Javascript
js传参数受特殊字符影响错误的解决方法
Oct 21 Javascript
js中键盘事件实例简析
Jan 10 Javascript
javascript引用赋值(地址传值)用法实例
Jan 13 Javascript
jQueryUI中的datepicker使用方法详解
May 25 Javascript
vue2.0+webpack环境的构造过程
Nov 08 Javascript
无法获取隐藏元素宽度和高度的解决方案
Mar 07 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
Dec 10 Javascript
layui 实现表格某一列显示图标
Sep 19 Javascript
Jquery异步上传文件代码实例
Nov 13 jQuery
JavaScript实现HSL拾色器
May 21 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脚本的10个技巧(2)
2006/10/09 PHP
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
php将会员数据导入到ucenter的代码
2010/07/18 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
JS使用正则实现去掉字符串左右空格的方法
2016/12/27 Javascript
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
Python深入学习之对象的属性
2014/08/31 Python
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
python requests 使用快速入门
2017/08/31 Python
浅谈python日志的配置文件路径问题
2018/04/28 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
Python&amp;&amp;GDAL实现NDVI的计算方式
2020/01/09 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
大课间活动实施方案
2014/03/06 职场文书
意向书范本
2014/07/29 职场文书
安全标兵事迹材料
2014/08/17 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
golang使用map实现去除重复数组
2022/04/14 Golang