treeview自定义菜单

本文介绍了如何利用treeview、递归以及Java和jsp技术实现两种不同的自定义菜单效果。第一种实现包括css样式、HTML内容、script样式和后台代码的详细步骤。第二种实现则涵盖HTML代码,如菜单按钮组、添加菜单表单弹框和编辑菜单功能,并通过JS代码进行操作。
摘要由CSDN通过智能技术生成

treeview官网:https://www.bootcdn.cn/bootstrap-treeview/readme/#about

实现效果1:

在这里插入图片描述
1. css样式:

<link href="<%=request.getContextPath() %>/js/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="<%=request.getContextPath() %>/js/treeview/bootstrap-treeview.min.css" rel="stylesheet">

2. HTML内容:

<div id="tree"></div>

3. script样式

<script src="<%=request.getContextPath() %>/js/jquery-3.2.1.js"></script>
<script src="<%=request.getContextPath() %>/js/dist/js/bootstrap.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/treeview/bootstrap-treeview.min.js"></script>


function initMenu(){
   
   		$.post("<%=request.getContextPath() %>/menu/queryMenu",function(result){
   
   			var tree = result;
   			$("#tree").treeview(
   		    		{
   
   		    			data:tree,
   		    			onNodeSelected: function (event,data) {
   
							if (data.href != "" && data.href != null) {
   
								var v_path = data.href;
								var v_text = data.text;
//									$.post('<%=request.getContextPath() %>'+v_path,function(result){
   
// 										$("#homeTitle").html(v_text);
// 										$("#home").html(result);
// 									})
									$("#homeTitle").html(v_text);
									$("#home iframe").attr("src",'<%=request.getContextPath() %>'+v_path);
							}    	    		    		
       		    		},
   		    		}
   		    	);
    		})
    	}

4. 后台代码

//controller控制层:
@RequestMapping("queryMenu")
@ResponseBody
public List<Menu> queryMenu(HttpSession session) {
   
	//取出登录后的用户信息
	User user = (User) session.getAttribute("userInfo");
	//根据用户id查询这个用户的菜单集合
	List<Menu> menuList = menuService.queryMenu(user.getUserId());
	return menuList;
}

//service业务逻辑层:(递归算法):
public List<Menu> queryMenu(Integer userId) {
   
		Set<Menu> menuSet = new LinkedHashSet<Menu>();
		//查询这个用户的根节点----用linkedHash预防重复项并且顺序不会乱
		menuSet = menuDao.queryMenu(userId,SystemConstant.TREE_ROOT);
		//调用递归方法
		queryChildMenu(userId,menuSet);
		return new ArrayList<Menu>(menuSet);
	}
public void queryChildMenu(Integer userId,Set<Menu> menuSet) {
   
	for (Menu menu : menuSet) {
   
		Set
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值