我们如何在JSTL中迭代HashMap?

时间:2015-11-03 05:00:00

标签: html jsp foreach hashmap jstl

我需要显示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);

2 个答案:

答案 0 :(得分: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中的第一个参数是Key,第二个参数是值。现在你需要使用键和值来访问jsp中的那个:

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

多数民众赞成。在你的情况下,你可以使用键和值循环jsp。希望这会有所帮助。

答案 1 :(得分:1)

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

您可能希望每个employee都是一行。要做到这一点,不要忘记将td包裹在tr c:forEach内<{1}}