2013-01-03 17 views
7

我有一个后端服务,它将返回一个Info对象。这个Info对象有一个FolderGroup对象的列表,这些对象又有对象列表FolderGroup等等。如何在JSP中呈现递归集合

基本上它是代表文件夹和子文件夹。但是在我的JSP页面中,我不知道它到底呈现什么样的深度来迭代。这怎么能用JSTL来处理?

回答

14

创建一个包含下面的代码JSP标记文件(WEB-INF/tags/folderGroups.tag):

<%@ 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> 

标签递归调用自己生成一个文件夹树。

而且你的JSP中,做

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

非常感谢:-)。将在几分钟内尝试完成并更新。 – Sripaul

+0

像魅力一样工作!非常感谢:-) – Sripaul

+3

我不得不将'type'添加到属性中,否则我将它作为String来获取。 即 '<%@ attribute name =“list”type =“MyClass”required =“true”%>' – Hagai