如何为 JSP 创建 TreeMap 变量,以便我可以使用 JSTL 对其进行迭代?

How to create TreeMap variable for JSP, so I can iterate over it using JSTL?

我刚开始使用 JSP 和 JSTL,我对如何使用 JSTL 标签以及如何使用 JSTL 创建变量的逻辑感到很困惑。

这是我的 JSP 页面。

我正在尝试遍历 Treemap 并在我的 JSP 页面上显示键和值。

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import="com.company.ClassWhereMapIs" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.TreeMap" %>
<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
        <h1>Keys and values from TreeMap.</h1>

        <c:forEach var="entry" items="${treeMap}">
            Key: <c:out value="${entry.key}"/>
            Value: <c:out value="${entry.value}"/>
        </c:forEach>


    </body>
</html>

如何创建变量 ${treeMap} ?

最好能展示完整的示例。

请帮忙!

JSP / JSTL 是用于 view 应用程序的技术。视图的工作是从数据(模型:Java bean)生成一个HTML页面,这些数据由Java准备并传递给视图class:控制器

控制器通常作为 Servlet 实现。

为了将数据传递给视图,控制器执行以下操作:

SomeData data = ...;
request.setAttribute("data", data);
request.getRequestDispatcher("/the/path/of/the/view.jsp").forward(request, response);

由于控制器已将要显示的数据存储在请求属性中(在我的示例中名为 "data"),JSTL 现在可以访问此对象:

<ul>
    <c:forEach var="product" items="${data.products}">
        <li><c:out value="${product.name}"/></li>
    </c:forEach>
</ul>

所以,简单地回答你的问题,JSP EL "variables" 实际上是页面、请求(大部分时间)、会话或应用程序属性,这些属性通常是创建和在执行 JSP 之前由 Java 控制器存储。

如果您使用 Spring MVC 等真正的 MVC 框架,此 MVC 模式更易于实现,并提供更多功能。