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 相关文章推荐
Javascript----文件操作
Jan 18 Javascript
摘自启点的main.js
Apr 20 Javascript
jquery.validate的使用说明介绍
Nov 12 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
May 11 Javascript
jquery实现图片水平滚动效果代码分享
Aug 26 Javascript
手机端转换rem适应
Apr 01 Javascript
React Native仿美团下拉菜单的实例代码
Aug 08 Javascript
深入浅出es6模板字符串
Aug 26 Javascript
图片懒加载imgLazyLoading.js使用详解
Sep 15 Javascript
集成vue到jquery/bootstrap项目的方法
Feb 10 jQuery
详解javascript中的Error对象
Apr 25 Javascript
Vue初始化中的选项合并之initInternalComponent详解
Jun 11 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
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
2011/07/26 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
2020/07/17 Javascript
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
一些Python中的二维数组的操作方法
2015/05/02 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
Python中拆分字符串的操作方法
2019/07/23 Python
Apache部署Django项目图文详解
2019/07/30 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
如何使用repr调试python程序
2020/02/28 Python
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
儿科护士自我鉴定
2013/10/14 职场文书
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
防沙治沙典型材料
2014/05/07 职场文书
有关环保的标语
2014/06/13 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
合作意向书范本
2019/04/17 职场文书
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers
python程序的组织结构详解
2021/12/06 Python
分享Python异步爬取知乎热榜
2022/04/12 Python