角色授权业务分析(修改角色的权限、包括添加和删除):
1.前台显示
(1)拼tree:checkbox+tree:显示所有菜单
(2)查找ListId:该角色所拥有的权限,能够访问的menuId的List
(3)js动态加载,onload():勾选角色拥有的权限,即上面的ListId
2.修改权限
ajax修改 变量 true、false
完善性判断
前台显示
(1)拼tree:checkbox+tree
思考:拼tree,checkbox放置:jsp页面显示的<%=strTreeHTML>是action拼好的html代码,所以checkbox也放置在拼接html代码中,同时放入需要的属性,如id=menuId,后又加入name属性和onclick事件等。
action中的代码:
sbTreeHTML.append("<input id=" + treeModelSon.getT().getMenuId() + " type=\"checkbox\" name=\"checkbox\" onclick=\"permission(this)\" value=\"" + parentId + "\" />");
(2)查找ListId
获取ListId,Action中代码如下:
/**
* 显示给角色授权页面,并加载已有权限
* @return
*/
public String showTree() {
String strSbTreeHTML;
Object[] fatherField = new Object[] {"fatherMenu"};
TreeModel<Menu, Long> tree = commonTreeModelQueryBean.getTreeModel(Menu.class, fatherField, null, fatherField, null);
if (tree != null) {
Set<TreeModel<Menu, Long>> sonTree = tree.getSetTreeModels();
getSbTreeHTML(tree);
strSbTreeHTML = sbTreeHTML.toString();
} else {
strSbTreeHTML = "尚未添加菜单!";
}
System.out.println(strSbTreeHTML);
request.setAttribute("strSbTreeHTML", strSbTreeHTML);
List<Long> listId = new ArrayList<Long>();
int roleId = 0;
String roleIdString=request.getParameter("roleId");
if(roleIdString !=null){
roleId=Integer.parseInt(roleIdString);
}
String[] fields={"menuid"};
String relationTableName="T_ROLE_MENU";
String[] whereFields={"roleid"};
listId = commonQueryBean.queryFiledForList(fields, relationTableName, whereFields, roleId);
request.setAttribute("menuIdList", listId);
return "showTree";
}
(3)js动态加载,onload()
i js如何onload()
ii js解析List
iii 逻辑实现
(接下篇)