【问题标题】:c:forEach doesn't print map contents in JSPc:forEach 不在 JSP 中打印地图内容
【发布时间】:2020-08-31 13:02:40
【问题描述】:

免责声明:我今天在 stachoverflow 内外都在研究这个简单的问题,所以请多多包涵。

我在 JSP 上有以下代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="com.contrast.db.Manager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.util.Map"%>


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>



<%
    Integer age = Integer.valueOf(request.getParameter("age"));

%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test</title>


</head>
<body>


<%

    Manager db = new Manager();
    Connection conn = db.getConnection();


    if (null == conn) {
        out.println("Connection to MySQL failed");
    } else {
        out.println("Connection to MySQL succeeded");
    }

    Map<String, Integer> namesAndAge = db.findByAge(age);

%>

<h1>List of users older then <% out.println(age); %></h1>

<% out.println(namesAndAge); %>

<c:forEach items="${namesAndAge}" var="entry">
    Key = ${entry.key}, value = ${entry.value}<br>
</c:forEach>


</body>
</html>

这个意图和目的代码应该打印出db.findByAge(age)返回的HashMap的内容,但它没有

可以理解,可以假设 HashMap 可能为空,但事实并非如此(请参见下面的屏幕截图)

如您所见,HashMap 不为空,但不工作

任何想法我错过了什么?

【问题讨论】:

标签: java jsp hashmap


【解决方案1】:

在脚本中声明对象,而在 EL 表达式中引用的是上下文(pageContext、请求、会话或应用程序)中的属性。

改变这一行:

Map<String, Integer> namesAndAge = db.findByAge(age);

为此:

request.setAttribute("namesAndAge", db.findByAge(age));

【讨论】:

  • 非常感谢你,你是救世主!
猜你喜欢
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 1970-01-01
  • 2011-12-05
相关资源
最近更新 更多