
前台js //打开
菜单窗口function openMenuDialog(){var selected = $("#list").datagrid('getSelected') if (selected != null) {$("#id").val(selected.id) queryMenus(selected.id) $("#menuWindow").window("open") } else { $.messager.alert('提示', "未选择数据!")}}//角色-菜单信息入库function ajaxSubmit(rid,idstr){$.post("${ctx}/roleMenu/save.jhtml",{"roleId":rid,"ids":idstr},function(obj){$.messager.alert('提示',obj.msg) $("#menuWindow").window('close') },'json')} <!-- ztree --><script type="text/javascript">var tree = ""var setting = {check : {chkboxType:{"Y":"ps","N":"ps"},//勾选checkbox对于父子
节点的关联关系chkStyle:"checkbox",enable : true //是否复选框},//数据data : {simpleData : {enable : true}}}//查询菜单信息function queryMenus(roleId){$.post('${ctx}/role/treedata.jhtml', {'roleId':roleId}, function(zNodes) {for (var i = 0i <zNodes.lengthi++) {if (zNodes[i].isParent) { } else {//zNodes[i].icon = "${ctxStatic}/images/532.ico"//设置图标}}tree = $.fn.zTree.init($("#tree"), setting, zNodes) tree.expandAll(true)//全部展开//var nodes = treeObj.getNodes() }, 'json')}//获取选中节点function onCheck(){ var rid = $("#id").val()var treeObj=$.fn.zTree.getZTreeObj("tree")var nodes=treeObj.getCheckedNodes(true)var ids = new Array()for(var i=0i<nodes.lengthi++){//获取选中节点的值 ids.push(nodes[i].id) // v+=nodes[i].id + "," //alert(nodes[i].id) }ajaxSubmit(rid,ids)}</script>后台:action @RequestMapping(value = "/treedata.jhtml")@ResponseBodypublic String treedata(HttpServletRequest request, Model model) {DynamicParams params = new DynamicParams(request) List<Map<String, Object>>mapList = Lists.newArrayList()params.put("allMenu", "allMenu") List<Menu>list = menuManager.findMenuList(params)List<RoleMenu>roleMenus = roleMenuManager.findList(params)for(int i=0i<list.size()i++){Menu e = list.get(i) Map<String, Object>map = Maps.newHashMap() map.put("id", e.getId()) map.put("pId", e.getParentId()!=null?e.getParentId():0) map.put("name", e.getName()) for(RoleMenu roleMenu:roleMenus){if(roleMenu.getMenuId()==e.getId()){map.put("checked", true) }}mapList.add(map) }return toJson(mapList) } servicepublic List<Menu>findMenuList(DynamicParams params) {List<Menu>menus = new ArrayList<Menu>()if ("allMenu".equals(params.getString("allMenu"))) {menus = menuDao.findList(params) } else {// 通过用户查询角色List<UserRole>userRoles = userRoleDao.findList(params) // 通过角色查询菜单List<RoleMenu>roleMenus = new ArrayList<RoleMenu>() if (userRoles != null &&userRoles.size() >0) {for (UserRole userRole : userRoles) {params = new DynamicParams() if (userRole != null) {if (userRole.getRoleId().equals(params.getString("rid"))) {break }params.put("roleId", userRole.getRoleId().toString()) List<RoleMenu>rms = roleMenuDao.findList(params) for (RoleMenu roleMenu : rms) {roleMenus.add(roleMenu) }}}} // 查询菜单信息for (RoleMenu roleMenu : roleMenus) {if (roleMenu != null) {Menu menu = menuDao.find(roleMenu.getMenuId()) if(menu!=null){menus.add(menu) }}}menus = removeDuplicate(menus) Collections.sort(menus) }return menus } /** * 去除菜单中重复项 * * @param list * @return */private List<Menu>removeDuplicate(List<Menu>list) {List<Menu>result = new ArrayList<Menu>() Set<Long>menuIds = new HashSet<Long>() for (int i = 0i <list.size()i++) {Menu m = list.get(i) if (m != null &&menuIds.add(m.getId())) {result.add(m) }}return result }jsp动态
树形菜单须用到递归算法,比如在数据库有张表,parent表,parent的字段有id,name,depth,leve,ID自增,depth设置为级数,如这条数据最大,为0,如为字菜单就为1,而leve就指定它父节点的id,给段代码自己可以摸索下 public Vector getModuleTree()
{
Vector pclass = new Vector()
try
{
stmt =con.createStatement()
String sql = "select * from Module where parentid = 0"
rs = stmt.executeQuery(sql)
Module cvo = null
while(rs.next())
{
cvo = new Module()
cvo.setModule_id(rs.getInt("Module_id"))
cvo.setModule_name(rs.getString("Module_name"))
cvo.setModule_url(rs.getString("Module_url"))
cvo.setParentid(rs.getInt("parentid"))cvo.setRootid(rs.getInt("rootid"))cvo.setDepth(rs.getInt("depth"))pclass.add(cvo)
}
for (int i = 0i <pclass.size()i++)
{
Module pcvo = (Module) pclass.get(i)
ShowTreeMenu(pcvo)
}
con.commit() } catch (SQLException e)
{
e.printStackTrace()
} finally
{
try
{
if(rs!=null)
{
rs.close()
}
if(stmt!=null)
{
stmt.close()
}
if(con!=null)
{
con.close()
}
}
catch (SQLException e)
{
e.printStackTrace()
}
}
return classList
}
public void ShowTreeMenu(Module c)
{
Module ccvo = null
String sql = "select * from Module where parentid = " + c.getModule_id()
Vector cclass = new Vector()
try
{
Module cvotemp
stmt =con.createStatement()
rs = stmt.executeQuery(sql)
while(rs.next())
{
cvotemp = new Module()
cvotemp.setModule_id(rs.getInt("Module_id"))
cvotemp.setModule_name(rs.getString("Module_name"))
cvotemp.setModule_url(rs.getString("Module_url"))
cvotemp.setParentid(rs.getInt("parentid"))cvotemp.setRootid(rs.getInt("rootid"))cvotemp.setDepth(rs.getInt("depth"))cclass.add(cvotemp)
}
System.out.println(cclass.size()+"(((((((((((((((((((((((((9")
if (cclass.size() >0)
{
c.setHasChild("have")
classList.add(c)
for (int j = 0j <cclass.size()j++)
{
ccvo = (Module) cclass.get(j)
ShowTreeMenu(ccvo)
}} else
{
classList.add(c)
}
} catch (SQLException e)
{
e.printStackTrace()
}
}
评论列表(0条)