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