bootstrap-treeview后台Json数据的封装及前台的显示

1.bootStrap-treeview是我们常用的树形结构,页面风格也比较清新,但是后台数据的封装比较麻烦,经过研究终于解决,和大家分享一下。

2.前端代码如下

<script>
var data =${resTree};      //后台传过来的Json数据
 $(function () {
$('#tree').treeview({
color: "#428bca",
data:data, //Treeview的数据源 返回json
levels: 4,
onNodeSelected: function (e, m) { //Treeview 被选中事件,可以添加响应事件 
var id=m.id; 
var remark=m.text; 
},
onNodeUnselected: function (e, m) { //Treeview 取消选中事件
}
})
});
</script>
<html>
<body>
<div id="tree" class="col-md-6 col-lg-3" style="overflow:auto;display:block;height:700px"></div>  
</body>
</html>

 3.后台Json数据封装

我们的数据库表设计如下图

pid是父节点,继承自菜单的Id

public List<Navi> nextLevel(int id) {
		return navidao.nextLevel(id);             //通过菜单id查处它的子菜单节点
	}
	
	public List<Map<String,Object>> getTree(List<Navi> nlist) {            //传入的参数是查询出来的所有节点数据 
		String name;
		List<Map<String,Object>> listmap= new ArrayList<Map<String,Object>>();	
		List<Navi> list_xjj = new ArrayList<Navi>();			
		for(Navi navi : nlist)
		{
			list_xjj=nextLevel(navi.getId());
			Map<String, Object> xmap= new HashMap<String, Object>();
			name="\""+navi.getName()+"\"";
			String id="\""+navi.getId()+"\"";
			xmap.put("text",name);
			xmap.put("id", id);
			if(list_xjj.size()>0) {
				xmap.put("nodes", getTree(list_xjj));				
			}
			listmap.add(xmap);		
		}
		
		return listmap;
		
	}
//将查询出来的结果封装成json传给前台页面
@RequestMapping("/ListNavi")
public ModelAndView list(HttpServletRequest request,HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView();
List<Navi> naviList = new ArrayList<Navi>();
int id=0;
naviList = naviService.nextLevel(id);  //查出根节点下面所有的菜单选项
List<Map<String, Object>> result = naviService.getTree(naviList);       //对数据进行封装嵌套
String results = result.toString().replace("=",":");
JSONObject res = new JSONObject();
JSONArray jsonArray = JSONArray.fromObject(results);	        //封装成json结构,传给前台页面
mav.addObject("resTree", jsonArray);
mav.setViewName("page/navi/ListNavi");
return mav;
}

  

  通过这种方法,完美的实习了bootstrap-treeview后台数据的封装和显示,大家有疑问可以留言。

转载于:https://www.cnblogs.com/noahpk/p/9407691.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Bootstrap TreeviewBootstrap 分栏可以很容易地结合使用,以创建一个具有多级层次结构的导航菜单。 下面是一个简单的示例: ```html <div class="container"> <div class="row"> <div class="col-md-4"> <div id="treeview"></div> </div> <div class="col-md-8"> <h1>Content</h1> </div> </div> </div> ``` 在这个示例中,我们使用了 Bootstrap 的分栏组件来创建一个两列布局。左侧列占据了 4 个网格,右侧列占据了 8 个网格。 左侧列中的 div 元素使用了 id="treeview" 属性,这是我们将要使用 Bootstrap Treeview 插件渲染的容器。 接下来,我们需要引入 BootstrapBootstrap Treeview 的 CSS 和 JavaScript 文件,并在 JavaScript 中初始化 Treeview 插件: ```html <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-treeview/1.2.0/bootstrap-treeview.min.css"> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-treeview/1.2.0/bootstrap-treeview.min.js"></script> <script> $(function() { var data = [ { text: 'Parent 1', nodes: [ { text: 'Child 1', nodes: [ { text: 'Grandchild 1' }, { text: 'Grandchild 2' } ] }, { text: 'Child 2' } ] }, { text: 'Parent 2' }, { text: 'Parent 3' } ]; $('#treeview').treeview({data: data}); }); </script> ``` 在这个示例中,我们创建了一个包含多级层次结构的数据对象,并将其传递给 Treeview 插件的 data 选项。 最后,我们在 JavaScript 中使用 $('#treeview').treeview({data: data}) 方法将 Treeview 插件应用于 id="treeview" 的 div 元素。 这样,我们就可以在左侧列中创建一个具有多级层次结构的导航菜单,而右侧列中可以放置任何内容,例如显示所选菜单项的详细信息、表单等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值