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+plupload直接批量上传图片到又拍云
Dec 01 Javascript
JS实现为表格动态添加标题的方法
Mar 31 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
Feb 02 Javascript
Angular.js 实现数字转换汉字实例代码
Jul 14 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 Javascript
Vue.JS入门教程之处理表单
Dec 01 Javascript
jQuery实现一个简单的轮播图
Feb 19 Javascript
使用webpack打包koa2 框架app
Feb 02 Javascript
简单了解微信小程序的目录结构
Jul 01 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
Sep 23 Javascript
Node.js API详解之 net模块实例分析
May 18 Javascript
详解Vue的options
May 15 Vue.js
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
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
python调用外部程序的实操步骤
2019/03/04 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
Python程序控制语句用法实例分析
2020/01/14 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
Python print不能立即打印的解决方式
2020/02/19 Python
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
矫正人员思想汇报
2014/01/08 职场文书
保安岗位职责
2014/02/21 职场文书
医院院务公开实施方案
2014/05/03 职场文书
新学期家长寄语2016
2015/12/03 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
浅谈node.js中间件有哪些类型
2021/04/29 Javascript
pytorch--之halfTensor的使用详解
2021/05/24 Python
判断Python中的Nonetype类型
2021/05/25 Python