JSP中的JSTL循环可用于嵌套的无提示列表 [英] JSTL loop in JSP for nested unrodered lists

查看:101
本文介绍了JSP中的JSTL循环可用于嵌套的无提示列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

MVC-Servlet将请求转发到JSP. 在servlet中,我创建了类别列表(java.util.List),将此列表附加到servlet上下文中,并将请求转发到JSP页面:

MVC - servlet forwards request to JSP. In servlet i created list (java.util.List) of categories, attached this list to servlet context, and forwards request to JSP page:

public class Category{
       private Integer id;
       private String name;
       private Category parentCategory;
       ...
       //getters and setters
    }

此类表示类别/子类别(如果parentCategory字段为null,则它是顶级类别). 具有相同父级的类别是其子类别,并且它们映射到JSP中的嵌套无序列表. 示例:结果应类似于下一个HTML代码:

This class represents category/subcategory (if parentCategory field is null, then it is top level category). Categories that have same parent, are its subcategories, and they are mapped to nested unordered list in JSP. Example: result should look similar to next HTML code:

<ul class="droprightMenu">  
            <li><a href="#">Category 1</a>
                <ul class="droprightMenu">
                    <li><a href="#">Category 1.1</a></li>
                    <li><a href="#">Category 1.2</a></li>
                    <li><a href="#">Category 1.3</a></li>
                          <ul class="droprightMenu">
                                <li><a href="#">Category 1.3.1</a></li>
                                <li><a href="#">Category 1.3.2</a></li>
                                <li><a href="#">Category 1.3.3</a></li>
                                <li><a href="#">Category 1.3.4</a></li>
                          </ul> 
                    <li><a href="#">Category 1.4</a></li>
                </ul>
            </li>
            <li><a href="#">Category 2</a></li>
            <li><a href="#">Category 3</a></li>
                <ul class="droprightMenu">
                    <li><a href="#">Category 3.1</a></li>
                    <li><a href="#">Category 3.2</a></li>
                          <ul class="droprightMenu">
                                <li><a href="#">Category 3.2.1</a></li>
                                <li><a href="#">Category 3.2.2</a></li>
                          </ul> 
                    <li><a href="#">Category 3.3</a></li>
                    <li><a href="#">Category 3.4</a></li>
                </ul>
            <li><a href="#">Category 4</a></li>
    </ul>

我不知道如何在JSP中遍历此列表.可能应该使用不同的JSTL循环或JSP scriptlet的某种组合来完成,也许要进行一些递归. 感谢任何帮助.

I don't know how to loop through this list in JSP. It should probably be done with some combination of different JSTL loops, or JSP scriptlets, maybe some recursion. Appreciate any help.

推荐答案

您需要像这样填充模型:

You need to populate your Model like this:

public class Category{
   private Integer id;
   private String name;
   private Category parentCategory;

   private List<Category> subCategories;

   ...
   //getters and setters
}

在Servlet中,您需要具有类别LEVEL 1的LIST(父级为NULL).

In Servlet, You need to have LIST of Category LEVEL 1 ( Parent is NULL ).

List<Category> rootCategories = getAllCategoriesLevel1();
request.setAttribute("rootCategories",  rootCategories );

在JSP中(需要3个循环或4,5个循环)

In JSP ( Need 3 loops OR 4,5 loops )

<c:forEach items="${rootCategories}" var="categoryLevel1">

    // ...

    <c:forEach items="${categoryLevel1.subCategories}" var="categoryLevel2">

        // ...

        <c:forEach items="${categoryLevel2.subCategories}" var="categoryLevel3">

            // ...  

        </c:forEach>

        // ...

    </c:forEach>

    // ...

</c:forEach>

这篇关于JSP中的JSTL循环可用于嵌套的无提示列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆