浏览 8075 次
锁定老帖子 主题:jstl递归生成树
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-15
显示树的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> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-04-24
不错。楼主。
|
|
返回顶楼 | |
发表时间:2012-04-25
wotodoo 写道 <jsp:include page="recursive.jsp"/>
利用这种方式来调用自身还真是没用过,下次借鉴试下,呵~ 不过一般情况不建议直接在在页面上写代码吧,这样代码比较难维护呀,且易读性没那么好,以上纯属个人意见,莫怪 ![]() |
|
返回顶楼 | |