【问题标题】:How can we iterate over an HashMap in JSTL? [duplicate]我们如何在 JSTL 中迭代 HashMap? [复制]
【发布时间】:2016-02-03 03:56:22
【问题描述】:

我需要显示 PL SQL 表中的数据以进行分配。我得到了一个 HashMap 的结果并将它传递给一个 JSP 页面。如何在表格中显示这些数据?我可以像这样在 JSTL 标签中使用 HTML 标签吗?

<c:forEach items="${employees}" var="employee">
  <td>${employee.name}</td>
  <td>${employee.city}</td>
  <td>${employee.salary}</td>
<c:forEach>

或者还有其他技术可以使用 PL SQL 在 JSP 页面中打印表格吗???

编辑: 这是我的代码:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
  </head>
  <body>
    <h1>Employee Details</h1>
    <form action="handler" method="post">
        <table>
            <tr>
                <td>Employee ID</td>
                <td>First Name</td>
                <td>Last Name</td>
                <td>Start Date</td>
                <td>End Date</td>
                <td>Salary</td>
                <td>City</td>
                <td>Description</td>
            </tr>
            <c:forEach items="${employees}" var="employee">
            <tr>
                <td>${employee.value.id}</td>
                <td>${employee.value.fName}</td>
                <td>${employee.value.lName}</td>
                <td>${employee.value.startD}</td>
                <td>${employee.value.endD}</td>
                <td>${employee.value.salary}</td>
                <td>${employee.value.city}</td>
                <td>${employee.value.desc}</td>
            </tr>
            </c:forEach>                    
        </table>
    </form>
  </body>
</html>

编辑 2:

这就是我创建 HashMap 的方式:

while (rs.next()) {
  employee = new Employee(
    rs.getString("EMPLOYEEID"),
    rs.getString("FIRST_NAME"),
    rs.getString("LAST_NAME"),
    rs.getString("START_DATE"),
    rs.getString("END_DATE"),
    rs.getString("SALARY"),
    rs.getString("CITY"),
    rs.getString("DESCRIPTION")
  );

  System.out.println(employee.toString());
  employees.put(rs.getString("EMPLOYEEID"), employee);

【问题讨论】:

  • 尝试使用&lt;c:out(例如将&lt;td&gt;${employee.value.id}&lt;/td&gt;替换为&lt;td&gt;&lt;c:out value="${employee.value.id}"/&gt;&lt;/td&gt;

标签: html jsp foreach hashmap jstl


【解决方案1】:

这是在java方法中创建HaspMap:

Map<String, String> countryList = new HashMap<String, String>();
countryList.put("United States", "Washington DC");
countryList.put("India", "Delhi");
countryList.put("Germany", "Berlin");
countryList.put("France", "Paris");
countryList.put("Italy", "Rome");

HaspMap 中的第一个参数是键,第二个参数是值。现在您需要在 jsp 中使用键和值来访问它:

<c:forEach var="country" items="${capitalList}">
    Country: ${country.key}  - Capital: ${country.value}
</c:forEach>

就是这样。在您的情况下,您也可以使用键和值在 jsp 中循环。希望这会有所帮助。

【讨论】:

  • 我已经添加了标题。但它没有显示任何数据。
  • 您是否检查过 java 方法中的 HashMap 从您将其发送到 jsp 的位置?是否包含值?
  • 我有。我打印出来了。它显示了数据。另一件事。我们可以打印这样的对象吗???
  • 如果你已经正确创建了HashMap,则不需要在HTML标签中使用.value。你能展示一下你是如何在 Java 中创建 HashMap 的吗?
  • 我在edit2中添加了代码
【解决方案2】:

是的,您可以在 JSTL 标记中使用 HTML 标记。这就是您可以在 JSP/HTML 中打印表格的方式。

您可能希望每个employee 成为一行。为此,不要忘记将您的 tds 包裹在 tr 中 c:forEach

【讨论】:

  • 如果我将&lt;c:foreach&gt; 放在&lt;tr&gt;&lt;/tr&gt; 标签内会怎样?我要求了解更多。并感谢您的回答。我会试试的。
  • 是的,您也可以将&lt;c:forEach&gt; 放入&lt;tr&gt;。您可以通过各种方式将它们混合在一起。你甚至可以嵌套它们(比如c:forEach 然后tr 然后再c:forEach 然后td 等等)
  • 但是我仍然没有在我的 JSP 页面中得到任何结果。我将代码发布为编辑。你能帮我吗???
猜你喜欢
  • 2012-03-04
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 2014-10-19
  • 2011-08-30
  • 1970-01-01
  • 2014-05-01
相关资源
最近更新 更多