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 相关文章推荐
实现超用户体验 table排序javascript实现代码
Jun 22 Javascript
js删除所有的cookie的代码
Nov 25 Javascript
jQuery无刷新分页完整实例代码
Oct 27 Javascript
Jquery实时监听input value的实例
Jan 26 Javascript
详解.vue文件中监听input输入事件(oninput)
Sep 19 Javascript
JQuery 又谈ajax局部刷新
Nov 27 jQuery
webpack vue项目开发环境局域网访问方法
Mar 20 Javascript
浅谈Node.js 沙箱环境
May 15 Javascript
Promise.all中对于reject的处理方法
Aug 01 Javascript
Vue3 源码导读(推荐)
Oct 14 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 Javascript
何时/使用 Vue3 render 函数的教程详解
Jul 25 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 什么是PEAR?(第三篇)
2009/03/19 PHP
php入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
gulp教程_从入门到项目中快速上手使用方法
2017/09/14 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
Python学习笔记之os模块使用总结
2014/11/03 Python
详解Python中expandtabs()方法的使用
2015/05/18 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
Python OpenCV 直方图的计算与显示的方法示例
2018/02/08 Python
python设置值及NaN值处理方法
2018/07/03 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
2019/08/29 Python
python3实现绘制二维点图
2019/12/04 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
PHP中如何使用Cookie
2015/10/28 面试题
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
写给妈妈的道歉信
2014/01/11 职场文书
会计专业求职信范文
2014/03/16 职场文书
电台编导求职信
2014/05/06 职场文书
云台山导游词
2015/02/03 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书
高中运动会前导词
2015/07/20 职场文书
js不常见操作运算符总结
2021/11/20 Javascript
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS