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 相关文章推荐
查询绑定数据岛的表格中的文本并修改显示方式的js代码
Dec 15 Javascript
jQuery中odd选择器的定义和用法
Dec 23 Javascript
js电话号码验证方法
Sep 28 Javascript
jquery实现具有嵌套功能的选项卡
Feb 12 Javascript
浅析Bootstrap验证控件的使用
Jun 23 Javascript
强大的 Angular 表单验证功能详细介绍
May 23 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
Mar 06 jQuery
详解VueJs中的V-bind指令
May 03 Javascript
webpack 开发和生产并行设置的方法
Nov 08 Javascript
JavaScript实现小球沿正弦曲线运动
Sep 07 Javascript
基于js Canvas实现二次贝塞尔曲线
Dec 25 Javascript
vue-router命名路由和编程式路由传参讲解
Jan 19 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设计模式 Adapter(适配器模式)
2011/06/26 PHP
PHP统计二维数组元素个数的方法
2013/11/12 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
Angular2 自定义表单验证器的实现方法
2018/12/14 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
Python输入二维数组方法
2018/04/13 Python
python 读取Linux服务器上的文件方法
2018/12/27 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
基于Python绘制个人足迹地图
2020/06/01 Python
python文件路径操作方法总结
2020/12/21 Python
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
模具数控专业自荐信
2014/01/27 职场文书
爽歪歪广告词
2014/03/20 职场文书
师德建设实施方案
2014/03/21 职场文书
志愿者宣传口号
2014/06/17 职场文书
上党课的心得体会
2014/09/02 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL