jstl处理递归问题

来源:互联网 发布:微信视频网络不稳定 编辑:程序博客网 时间:2024/05/16 08:07

文章转自:http://www.iteye.com/topic/1116588

需要两个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代码  收藏代码
  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代码  收藏代码
  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代码  收藏代码
  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>  
1 0
原创粉丝点击