jstl處理遞歸問題

文章轉自: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>  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章