文章轉自:http://www.iteye.com/topic/1116588
需要兩個jsp頁面,一個是你要顯示樹的jsp頁面tree.jsp,一個是遞歸構造樹的頁面recursive.jsp
顯示樹的jsp頁面,tree.jsp- <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
- <div style=" float:left; display:block; margin:10px; overflow:auto; width:200px; height:300px; border:solid 1px #CCC; line-height:21px; background:#FFF;">
- <ul class="tree">
- <%@include file="recursive.jsp"%>
- </ul>
- </div>
遞歸構造樹的頁面recursive.jsp
- <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
- <li>
- <a href="main.html" target="navTab" rel="main">${menu.name}</a>
- <c:if test="${not empty menu.children}">
- <ul>
- <c:forEach var="menu" items="${menu.children}">
- <c:set var="menu" value="${menu}" scope="request"/>
- <jsp:include page="recursive.jsp"/>
- </c:forEach>
- </ul>
- </c:if>
- </li>
菜單Model,簡單的一個Bean,樹狀結構的數據模型
- public class MenuItem{
- private String name;
- private String url;
- private List<MenuItem> children = new ArrayList<MenuItem>();
- public MenuItem(String name,String url){
- this.name = name;
- this.url = url;
- }
- public void addChildMenu(MenuItem menu){
- this.children.add(menu);
- }
- .......
- }
構造模擬數據
- MenuItem menu31 = new MenuItem("三級菜單1", "url31");
- MenuItem menu32 = new MenuItem("三級菜單2", "url32");
- MenuItem menu33 = new MenuItem("三級菜單3", "url33");
- MenuItem menu34 = new MenuItem("三級菜單4", "url34");
- MenuItem menu35 = new MenuItem("三級菜單5", "url35");
- MenuItem menu21 = new MenuItem("二級菜單1", "url21");
- menu21.addChildMenu(menu31);
- menu21.addChildMenu(menu32);
- menu21.addChildMenu(menu33);
- MenuItem menu22 = new MenuItem("二級菜單2", "url22");
- menu22.addChildMenu(menu34);
- menu22.addChildMenu(menu35);
- MenuItem root = new MenuItem("根目錄", "root");
- root.addChildMenu(menu21);
- root.addChildMenu(menu22);
以上就是通過jstl標籤構造生成樹的全部代碼了
最後生成的html代碼
- <div style=" float:left; display:block; margin:10px; overflow:auto; width:200px; height:300px; border:solid 1px #CCC; line-height:21px; background:#FFF;">
- <ul class="tree">
- <li>
- <a href="main.html" target="navTab" rel="main">根目錄</a>
- <ul>
- <li>
- <a href="main.html" target="navTab" rel="main">二級菜單1</a>
- <ul>
- <li><a href="main.html" target="navTab" rel="main">三級菜單1</a></li>
- <li><a href="main.html" target="navTab" rel="main">三級菜單2</a></li>
- <li><a href="main.html" target="navTab" rel="main">三級菜單3</a></li>
- </ul>
- </li>
- <li>
- <a href="main.html" target="navTab" rel="main">二級菜單2</a>
- <ul>
- <li>
- <a href="main.html" target="navTab" rel="main">三級菜單4</a>
- <a href="main.html" target="navTab" rel="main">三級菜單5</a>
- </li>
- </ul>
- </li>
- </ul>
- </li>
- </ul>
- </div>