2013-01-03 23 views
7

Mam usługę backendu, która zwraca mi obiekt Info. Ten obiekt Info ma listę obiektów FolderGroup, które z kolei mają listę obiektów FolderGroup i tak dalej.Jak zaprezentować kolekcję rekursywną w JSP

Zasadniczo służy do reprezentowania folderów i podfolderów. Ale na mojej stronie JSP nie wiedziałbym, do jakiej głębokości jest mi obecna iteracja. Jak można to zrobić za pomocą JSTL?

Odpowiedz

14

Utwórz plik JSP Tag (WEB-INF/tags/folderGroups.tag) zawierający następujący kod:

<%@ attribute name="list" required="true" %> 
<%@ taglib tagdir="/WEB-INF/tags" prefix="myTags" %> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<c:if test="${!empty list}"> 
    <ul> 
    <c:forEach var="folderGroup" items="${list}"> 
     <li><c:out value="${folderGroup.name}"/></li> 
     <myTags:folderGroups list="${folderGroup.subGroups}"/> 
    </c:forEach> 
    </ul> 
</c:if> 

tag wywołuje się rekurencyjnie wygenerować drzewo folderów.

A wewnątrz JSP, zrobić

<%@ taglib tagdir="/WEB-INF/tags" prefix="myTags" %> 
... 
<myTags:folderGroups list="${info.folderGroups}"/> 
+0

Bardzo dziękuję :-). Wypróbuje to za kilka minut i zaktualizuje. – Sripaul

+0

Pracował jak urok !!! Wielkie dzięki :-) – Sripaul

+3

Musiałem dodać "typ" do atrybutu, w przeciwnym razie dostałem go jako ciąg. tj. '<% @ nazwa atrybutu =" lista "typ =" MyClass "wymagany =" true "%>' – Hagai