【问题标题】:Printing HashMap in a JSP在 JSP 中打印 HashMap
【发布时间】:2014-03-05 09:20:02
【问题描述】:

我正在使用 Spring Framework,我想使用 JSTL 的 ForEach 循环在 JSP 中打印 HashMap

这是我的控制器代码:

@RequestMapping(value = "/addContact", method = RequestMethod.POST)
    public ModelAndView addContact(@ModelAttribute("contact")
                            Contact contact, BindingResult result)
    {
        ModelMap modelMap = new ModelMap();
        String msg = "Jon Doe added to database";

        modelMap.put("message", msg);

        Map<String, String> myMap = new HashMap<String, String>();
        myMap.put("A", "DD");
        myMap.put("B", "EE");
        myMap.put("C", "FF");

        System.out.println("***********************************");
        for (Map.Entry<String, String> entry : myMap.entrySet()) {
            System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
        }
        modelMap.put("myMap", myMap);

        return new ModelAndView("hello", modelMap);

    }

以下是我的 JSP:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Hi there</title>
</head>
<body>
    <h2>Hello</h2>
    <c:out value="${message}"></c:out> <br> <br> <br>
    <a href="http://localhost:8080/SpringMVC/">back</a>

    <br>

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

</body>
</html>

我使用了in this accepted answer.解释的逻辑

但我仍然无法打印 HashMap。收到错误 HTTP 状态 500

这是我的控制台输出:

13:23:11,756 INFO  [EARDeployer] Started J2EE application: file:/C:/jboss-4.0.2_1/server/default/deploy/SpringMVCEAR.ear
13:23:54,863 INFO  [STDOUT] ***********************************
13:23:54,863 INFO  [STDOUT] Key = A, Value = DD
13:23:54,863 INFO  [STDOUT] Key = B, Value = EE
13:23:54,863 INFO  [STDOUT] Key = C, Value = FF
13:23:55,098 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
java.lang.NoClassDefFoundError: javax/el/ValueExpression
    at java.lang.Class.getDeclaredMethods0(Native Method)

当我删除 JSP 中的 forEach 标记时,我的页面会正确显示,并显示消息 Jon Doe added to database

提前感谢您的帮助:)

编辑我也尝试过不使用 forEach 循环体:

<c:forEach items="${myMap}" var="entry">
        Something
    </c:forEach> 

还是一样的错误

【问题讨论】:

  • 你试过没有 c:out 吗? 键:${entry.key} 值:${entry.value}
  • @Henrik,是的,但我仍然遇到同样的错误。

标签: java jsp spring-mvc hashmap jstl


【解决方案1】:

我认为是 jar 冲突

删除这个:

jstl-1.2.jar

来自WEB-INF/lib 目录

【讨论】:

  • 嗯,我想你有一个错误版本的 jar,在 WEB-INF/lib 目录中,你有一些 jstl*.jar 吗?
  • 我不这样,因为当我不添加任何 forEach 时,我的 c:out 正在工作查找,无论如何我有 jstl-1.2.jar 和 standard-1.1.2.jar在我的 lib 文件夹中
  • 你能删除(或暂时放入另一个目录) jstl-1.2.jar 吗?或回到 1.1.2 版本。
  • 我认为问题是 jar 冲突。您能否将答案标记为有效以关闭问题。
  • 知道了,我的 web.xml 被声明为 Servlet 2.4,为了使用 jstl-1.2,我们至少需要 Servlet 2.5。谢谢您的帮助。 :)
猜你喜欢
  • 2019-05-18
  • 2011-08-20
  • 2015-02-14
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
相关资源
最近更新 更多