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 相关文章推荐
看了就知道什么是JSON
Dec 09 Javascript
javscript对象原型的一些看法
Sep 19 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
May 06 Javascript
基于bootstrap3和jquery的分页插件
Jul 31 Javascript
JS构造函数与原型prototype的区别介绍
Jul 04 Javascript
Node.js如何自动审核团队的代码
Jul 20 Javascript
微信小程序 实例应用(记账)详解
Sep 28 Javascript
浅谈angularjs $http提交数据探索
Jan 20 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
Jan 23 Javascript
IE8中jQuery.load()加载页面不显示的原因
Nov 15 jQuery
layui中select,radio设置不生效的解决方法
Sep 05 Javascript
基于redis的小程序登录实现方法流程分析
May 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
输出控制类
2006/10/09 PHP
php编程每天必学之表单验证
2016/03/01 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
JavaScript数组前面插入元素的方法
2015/04/06 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
JavaScript实现数值自动增加动画
2017/12/28 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
Python中逗号的三种作用实例分析
2015/06/08 Python
python追加元素到列表的方法
2015/07/28 Python
Python中按值来获取指定的键
2019/03/04 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
python set集合使用方法解析
2019/11/05 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
HTML5视频播放插件 video.js介绍
2018/09/29 HTML / CSS
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
新春联欢会主持词
2014/03/24 职场文书
县级文明单位申报材料
2014/05/23 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
德能勤绩工作总结
2015/08/11 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书