jstl处理递归问题+jquery,tree无限级树形菜单+简单实用案例

Posted JavaWeb大本营

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jstl处理递归问题+jquery,tree无限级树形菜单+简单实用案例相关的知识,希望对你有一定的参考价值。



需要两个jsp页面,一个是你要显示树的jsp页面tree.jsp,一个是递归构造树的页面recursive.jsp 

显示树的jsp页面,tree.jsp 

html代码  

  1. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>  

  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  

  3. <div style=" float:left; display:block; margin:10px; overflow:auto; width:200px; height:300px; border:solid 1px #CCC; line-height:21px; background:#FFF;">  

  4. <ul class="tree">  

  5. <%@include file="recursive.jsp"%>  

  6. </ul>  

  7. </div>  


递归构造树的页面recursive.jsp 

Html代码  jstl处理递归问题+jquery,tree无限级树形菜单+简单实用案例

  1. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>  

  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  

  3.        <li>  

  4.               <a href="main.html" target="navTab" rel="main">${menu.name}</a>  

  5.               <c:if test="${not empty menu.children}">  

  6.                      <ul>  

  7.                         <c:forEach var="menu" items="${menu.children}">  

  8.                             <c:set var="menu" value="${menu}" scope="request"/>  

  9.                         <jsp:include page="recursive.jsp"/>  

  10.                         </c:forEach>              

  11.                      </ul>  

  12.               </c:if>  

  13.        </li>  


菜单Model,简单的一个Bean,树状结构的数据模型 

Java代码  jstl处理递归问题+jquery,tree无限级树形菜单+简单实用案例

  1. public class MenuItem{  

  2.          private String name;  

  3.          private String url;  

  4.          private List<MenuItem> children = new ArrayList<MenuItem>();  

  5.          public MenuItem(String name,String url){  

  6.                 this.name = name;  

  7.                 this.url = url;  

  8.          }  

  9.          public void addChildMenu(MenuItem menu){  

  10.                 this.children.add(menu);  

  11.          }  

  12.          .......  

  13.   }  


构造模拟数据 

Java代码  jstl处理递归问题+jquery,tree无限级树形菜单+简单实用案例

  1. MenuItem menu31 = new MenuItem("三级菜单1""url31");  

  2. MenuItem menu32 = new MenuItem("三级菜单2""url32");  

  3. MenuItem menu33 = new MenuItem("三级菜单3""url33");  

  4. MenuItem menu34 = new MenuItem("三级菜单4""url34");  

  5. MenuItem menu35 = new MenuItem("三级菜单5""url35");  

  6.   

  7. MenuItem menu21 = new MenuItem("二级菜单1""url21");  

  8. menu21.addChildMenu(menu31);  

  9. menu21.addChildMenu(menu32);  

  10. menu21.addChildMenu(menu33);  

  11.   

  12. MenuItem menu22 = new MenuItem("二级菜单2""url22");  

  13. menu22.addChildMenu(menu34);  

  14. menu22.addChildMenu(menu35);  

  15.   

  16. MenuItem root = new MenuItem("根目录""root");  

  17. root.addChildMenu(menu21);  

  18. root.addChildMenu(menu22);  


以上就是通过jstl标签构造生成树的全部代码了 

最后生成的html代码 

Html代码  

  1. <div style=" float:left; display:block; margin:10px; overflow:auto; width:200px; height:300px; border:solid 1px #CCC; line-height:21px; background:#FFF;">  

  2. <ul class="tree">  

  3.        <li>  

  4.               <a href="main.html" target="navTab" rel="main">根目录</a>              

  5.               <ul>  

  6.                      <li>  

  7.                            <a href="main.html" target="navTab" rel="main">二级菜单1</a>  

  8.                            <ul>  

  9.                                   <li><a href="main.html" target="navTab" rel="main">三级菜单1</a></li>          

  10.                                   <li><a href="main.html" target="navTab" rel="main">三级菜单2</a></li>  

  11.                                   <li><a href="main.html" target="navTab" rel="main">三级菜单3</a></li>                            

  12.                            </ul>  

  13.                      </li>  

  14.                      <li>  

  15.                            <a href="main.html" target="navTab" rel="main">二级菜单2</a>  

  16.                            <ul>                     

  17.                                   <li>  

  18.                                          <a href="main.html" target="navTab" rel="main">三级菜单4</a>  

  19.                                          <a href="main.html" target="navTab" rel="main">三级菜单5</a>  

  20.                                   </li>  

  21.                            </ul>  

  22.                      </li>    

  23.               </ul>  

  24.        </li>  

  25. </ul>  

  26. </div>  

jquery,tree无限级树形菜单+简单实用案例

我在项目中用到产品类别的树形。各种地方都要用。 我就封装起来,方便以后调用。

记录下来,希望给新手们提供帮助。要记得导入jquery.js  tree.js 哦



[html] view plaincopyprint?

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  

  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  

  3. <link rel="stylesheet" type="text/css" href="page/plugin/zTree/zTreeStyle/zTreeStyle.css"/>  

  4. <script type="text/javascript" src="page/js/jquery.ztree-2.6.min.js"></script>  

  5.   

  6. <div id="goodsCategoryTree" class="tree"></div>  

  7. <input type="hidden" id="goodsCategoryTreeSelect" name="goodsCategoryTreeSelect"/>  

  8. <input type="hidden" id="goodsCategoryTreeSelectName" name="goodsCategoryTreeSelectName"/>  

  9. <script>  

  10. var goodsCategoryTree;  

  11. var treeNodes = eval('(${web.goodsCategoryJson})');//为节点进行json赋值   

  12. function getCheckTreeNode(event, treeId, treeNode){//获取选中节点id,name  

  13.     var tId = treeNode.cateID;  

  14.     var name = treeNode.cateName;  

  15.     $("#goodsCategoryTreeSelect").val(tId);  

  16.     $("#goodsCategoryTreeSelectName").val(name);  

  17.     $("#goodsCategoryTreeSelect").focus();  

  18. }  

  19. var setting = {//参数设置  

  20.     isSimpleData : true,              //数据是否采用简单 Array 格式,默认false  

  21.     treeNodeKey : "cateID",               //在isSimpleData格式下,当前节点id属性  

  22.     nameCol : "cateName",  

  23.     treeNodeParentKey : "parentCateID",        //在isSimpleData格式下,当前节点的父节点id属性  

  24.     showLine : true,                  //是否显示节点间的连线  

  25.     checkable : false,                  //每个节点上是否显示 CheckBox  

  26.     callback : {  

  27.         click: getCheckTreeNode  

  28.     }  

  29. };  

  30. goodsCategoryTree = $("#goodsCategoryTree").zTree(setting, treeNodes);//初始化树形  

  31.   

  32. </script>  


Json 数据字符串
web.goodsCategoryJson =  [{"cateID":"05E19A7462A148709CE295CA2295BD7E","cateName":"计算机","parentCateID":"43242"},{"cateID":"43242","cateName":"电器","parentCateID":"1"},{"cateID":"43243","cateName":"服装1","parentCateID":"1"},{"cateID":"43244","cateName":"女装","parentCateID":"43243"},{"cateID":"43245","cateName":"根目录","parentCateID":"43243"},{"cateID":"43246","cateName":"根目录6","parentCateID":"43244"},{"cateID":"43247","cateName":"根目录7","parentCateID":"43245"},{"cateID":"43248","cateName":"根目录8","parentCateID":"43246"},{"cateID":"43249","cateName":"根目录9","parentCateID":"43247"},{"cateID":"43250","cateName":"根目录0","parentCateID":"43248"},{"cateID":"43251","cateName":"根目录1","parentCateID":"43249"},{"cateID":"43252","cateName":"根目录2","parentCateID":"43250"},{"cateID":"43253","cateName":"根目录3","parentCateID":"2"},{"cateID":"1","cateName":"通用分类","parentCateID":"-1"},{"cateID":"2","cateName":"频道分类","parentCateID":"-1"}]


扫一扫关注二维码,获取更多源代码



以上是关于jstl处理递归问题+jquery,tree无限级树形菜单+简单实用案例的主要内容,如果未能解决你的问题,请参考以下文章

PHP原生递归实现无限级分类树状展示数据

无限级分类数据处理方法

几十万条数据用PHP递归能实现无限级分类吗

无限极分类

无限级分类实现思路

Vue实现无限级树形选择器(无第三方依赖)