基于基础数据库建立完毕,建立对基础数据的操作。
用户的增删改,角色的增删改,action的增删改。
首先介绍用户增删改。
仅仅为测试数据(不要钻牛角尖说没验证,目前主要是实现user表关联role表)
(crud操作后面会专门写一篇此处只关心绑定角色)
思路为:点击分配角色获取角色列表,将当前选中的用户id和角色id发送到action层。
简单叙述下前台需要做些什么:
1.获取当前用户id(id为空验证要加上)
2.获取选中角色id(id为空验证要加上)
3.ajax操作
4.操作完以后需要实时刷新当前表(各种细节不再贴代码)
下面为点击保存时的ajax代码(只写关键性代码其余代码省略)
$.ajax({ type: 'POST', url: 'userAction!changeRole.action' , data:{"id":id,"roleId":row.id}, success : function(data) { $("#UserList_dg").datagrid('reload'); message.show(data); $("#userList_dialog").dialog('close'); } });
下面是action层代码
简答叙述下action需要做些什么
1.获取roleid
2.通过userid获取对应实体
3.将role实体加入到user实体中
4.进行保存user实体
public void changeRole() { Json j = new Json(); try { String roleId = getRequest().getParameter("roleId"); T_role role = new T_role(); role.setId(roleId); T_user u = service.getById(id); Set<T_role> r = new HashSet<T_role>(); r.add(role); u.setRole(r); service.update(u); j.setMsg("修改角色成功"); j.setSuccess(true); } catch (Exception e) { // TODO: handle exception j.setMsg("修改角色失败"); j.setSuccess(false); } writeJson(j); }
(此处只做1个角色的保存,如果保存多个角色,需要前台发送多个角色id,可以数组的形式,然后action进行循环将roleid加入到set中)
这样就将用户和角色进行了关联。
下面进行角色和action关联
简单叙述下前台需要做什么
1.获取当前角色id
2.获取所选权限树节点的id(这里没有看到按钮的action因为我没做,加个判断保存节点类型为菜单或者按钮就可以)
3.ajax
4.前台刷新(细节问题不再重复)
前台核心代码
var m = window.frames['aa'].contentWindow; var nodes = m.$("#AllTreeList_tree").tree('getChecked'); var treeID = ""; if (nodes == null || nodes.length == 0) { treeID = ""; } else { for (i = 0; i < nodes.length; i++) { if (treeID == "") { treeID = nodes[i].id; } else { treeID = nodes[i].id + "," + treeID; } } } $.ajax({ type : 'POST', url : 'roleAction!changeAction.action', data : { "ids" : treeID, "id" : id }, success : function(data) { message.show(data); $("#RoleList_dialog").dialog('close'); $("#RoleList_dg").datagrid('reload'); } });
下面是action层代码
简单叙述下action需要做什么
1.获取节点id。(因为是多个,所以要循环加入到set中)
2.根据角色Id获取角色实体
3.保存
4.清空action
//配置权限 public void changeAction() { String[] arr_aciton_id = null; Json j =new Json(); if(ids!=null&&!ids.equals("")) { arr_aciton_id = ids.split(","); try { T_role role=service.getById(id); Set<Menu> menu = new HashSet<Menu>(); for(int i=0;i<arr_aciton_id.length;i++) { Menu m =new Menu(); m.setId(arr_aciton_id[i]); menu.add(m); } role.setMenu(menu); service.update(role); j.setMsg("权限配置成功"); j.setSuccess(true); } catch (Exception e) { // TODO: handle exception j.setMsg("权限配置失败"); j.setSuccess(false); } } else { try { T_role role=service.getById(id); role.setMenu(null); service.update(role); j.setMsg("权限配置成功"); j.setSuccess(true); } catch (Exception e) { // TODO: handle exception logger.info(e.toString()); j.setMsg("权限配置失败"); j.setSuccess(false); } } writeJson(j); }
到此为止,用户绑定角色,角色绑定action已经完成。
下面需要做的是不同的账号登录获取不同的权限。、
客户端表现为:显示不同的权限树,关联的按钮在没有显示的时候为隐藏状态。