【问题标题】:How to present a recursive collection in JSP如何在 JSP 中呈现递归集合
【发布时间】:2013-01-03 08:32:38
【问题描述】:

我有一个后端服务返回一个Info 对象。这个Info 对象有一个FolderGroup 对象列表,而FolderGroup 对象列表又是FolderGroup 对象列表等等。

基本上就是表示文件夹和子文件夹。但是在我的 JSP 页面中,我不知道要迭代到什么深度。 JSTL如何处理?

【问题讨论】:

    标签: jsp user-interface view collections jstl


    【解决方案1】:

    创建一个包含以下代码的 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}"/>
    

    【讨论】:

    • 我必须将type 添加到属性中,否则我将其作为字符串获取。即&lt;%@ attribute name="list" type="MyClass" required="true" %&gt;
    • 我使用的是一个集合,所以我需要 type="java.util.LinkedHashSet"。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2019-11-05
    • 2012-05-04
    相关资源
    最近更新 更多