如何在JSP中呈现递归集合

Sri*_*aul 7 collections user-interface jsp jstl view

我有一个后端服务,它返回一个Info对象.该Info对象具有一个对象列表,这些FolderGroup对象又具有FolderGroup对象列表等.

基本上它是代表文件夹和子文件夹.但是在我的JSP页面中,我不知道它会呈现给我多少深度迭代.如何使用JSTL处理?

JB *_*zet 14

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

<%@ 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>
Run Code Online (Sandbox Code Playgroud)

标签以递归方式调用自身以生成文件夹树.

在你的JSP里面,做

<%@ taglib tagdir="/WEB-INF/tags" prefix="myTags" %>
...
<myTags:folderGroups list="${info.folderGroups}"/>
Run Code Online (Sandbox Code Playgroud)

  • 我必须在属性中添加`type`,否则我将它作为String.即`<%@ attribute name ="list"type ="MyClass"required ="true"%>` (3认同)