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 相关文章推荐
IE不出现Flash激活框的小发现的js实现方法
Sep 07 Javascript
event对象获取方法总结在google浏览器下测试
Nov 03 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
Feb 21 Javascript
微信小程序 教程之注册页面
Oct 17 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 jQuery
Vue源码学习之初始化模块init.js解析
Nov 02 Javascript
微信小程序实现添加手机联系人功能示例
Nov 30 Javascript
JavaScript比较同一天的时间大小实例代码
Feb 09 Javascript
npm scripts 使用指南详解
Oct 08 Javascript
vue axios封装及API统一管理的方法
Apr 18 Javascript
小程序如何获取多个formId实现详解
Sep 20 Javascript
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计算整个目录大小的方法
2015/06/01 PHP
php实现通过ftp上传文件
2015/06/19 PHP
PHP实现事件机制的方法
2015/07/10 PHP
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
2015/03/04 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
Bootstrap Paginator+PageHelper实现分页效果
2018/12/29 Javascript
在Python中使用Mako模版库的简单教程
2015/04/08 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
Python参数传递及收集机制原理解析
2020/06/05 Python
python 制作简单的音乐播放器
2020/11/25 Python
html5中使用hotcss.js实现手机端自适配的方法
2020/04/23 HTML / CSS
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
城市规划应届生推荐信
2014/09/08 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
个人党性锻炼总结
2015/03/05 职场文书
Python实现查询剪贴板自动匹配信息的思路详解
2021/07/09 Python
JS数组方法some、every和find的使用详情
2021/10/05 Javascript
Go语言基础map用法及示例详解
2021/11/17 Golang
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS