2008-11-07 4 views
9

Je suis en train d'implémenter une balise arborescente pour un de mes projets pratiques, où j'afficherais le contenu d'un répertoire sous la forme d'un arbre (récursivement). J'avais mis en place une exigence similaire à une balise personnalisée en Java pendant les jours pré-JSP2.0. La gestion d'un répertoire nécessite une récursivité (pour gérer les sous-répertoires)! Est-il possible de coder ceci comme des fichiers d'étiquettes et peuvent-ils être utilisés de manière récursive?JSP Tag Recursion

Répondre

11

Voici un exemple d'un fichier d'étiquette récursif qui affiche à partir d'un noeud tout ce qu'il est des enfants récursivement (utilisé pour générer un 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> 

Ceci peut être utilisé dans un fichier régulier JSP comme ceci:

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

l'astuce d'inclure propre taglib de la balise fonctionne pour les fichiers de balises, mais je n'ont pas été en mesure d'utiliser cela dans une classe de gestionnaire de balises. Question connexe: http://stackoverflow.com/questions/2326981/jsp-custom-taglib-nested-evaluation – David