jstl处理递归问题
2014-10-29 20:53
246 查看
文章转自:http://www.iteye.com/topic/1116588
需要两个jsp页面,一个是你要显示树的jsp页面tree.jsp,一个是递归构造树的页面recursive.jsp
显示树的jsp页面,tree.jsp
Html代码
<%@ 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
Html代码
<%@ 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,树状结构的数据模型
Java代码
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);
}
.......
}
构造模拟数据
Java代码
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代码
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>
需要两个jsp页面,一个是你要显示树的jsp页面tree.jsp,一个是递归构造树的页面recursive.jsp
显示树的jsp页面,tree.jsp
Html代码
<%@ 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
Html代码
<%@ 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,树状结构的数据模型
Java代码
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);
}
.......
}
构造模拟数据
Java代码
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代码
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>
相关文章推荐
- RIA Service中对于递归实体类型处理的问题及解决方案
- net2.0对于递归变量的处理方式不同引发的递归问题
- jstl 问题处理
- 由递归思想处理问题的基本原则
- 递归问题的处理
- 用循环和递归处理迷宫问题
- 票价问题 —— 两种递归处理
- 查找窗体界面中的控件,递归查找等控件处理问题,多使用于权限设置管理。
- 理解使用递归及堆栈的算法处理八皇后问题
- Java 递归、尾递归、非递归 处理阶乘问题
- Java 递归、尾递归、非递归、栈 处理 三角数问题
- python使用递归思想处理问题
- RIA Service中对于递归实体类型处理的问题及解决方案
- Java 递归、尾递归、非递归 处理阶乘问题
- JSTL版本库问题处理
- Java 递归、尾递归、非递归、栈 处理 三角数问题
- 查找替换RTF格式的文本时对锁定文本的处理问题
- 处理VS.NET资源文件过程中产生的问题
- Asp.net中如何处理一个站点不同Web应用通用Session的问题
- 你是如何处理“对非共享成员的引用要求对象引用”这个问题的?