2008-11-07 62 views
9

我正在为我的一个练习项目实现树标记,在那里我会以树的形式(递归地)显示目录的内容。在JSP2.0以前的版本中,我已经实现了与Java中的自定义标签类似的要求。 处理目录需要递归(处理子目录)!是否有可能将此代码编码为标记文件,并且可以以递归方式使用它们?JSP标记递归

回答

11

下面是从节点显示一个递归标签文件的一个示例的所有它的儿童recursivly(用于生成YUI treeview):

/WEB-INF/tags/nodeTree.tag

<%@tag description="display the whole nodeTree" pageEncoding="UTF-8"%> 
<%@attribute name="node" type="com.myapp.Node" required="true" %> 
<%@taglib prefix="template" tagdir="/WEB-INF/tags" %> 
<li>${node.name} 
<c:if test="${fn:length(node.childs) > 0}"> 
    <ul> 
    <c:forEach var="child" items="${node.childs}"> 
     <template:nodeTree node="${child}"/> 
    </c:forEach> 
    </ul> 
</c:if> 
</li> 

这可以在常规的JSP文件中使用这样的:

<div id="treeDiv1"> 
    <ul> 
     <c:forEach var="child" items="${actionBean.rootNode.childs}"> 
      <template:nodeTree node="${child}"/> 
     </c:forEach> 
    </ul> 
</div> 
+0

包括标签本身的taglib的技巧适用于标签的文件,但我无法在标签处理程序类中使用它。相关问题:http://stackoverflow.com/questions/2326981/jsp-custom-taglib-nested-evaluation – David 2014-12-01 17:53:19