JSP,Java,Spring,迭代HashMap并从其值调用基本的getter方法?

时间:2011-03-08 09:06:20

标签: java jsp spring-mvc jstl

我对如何正确地执行此操作感到有点迷失,我在Spring中向我的模型发送一个变量,如下所示:

Map<Integer, Tab2WorkTableDocumentCounts> finalJspList = new HashMap<Integer, Tab2WorkTableDocumentCounts>();

Tab2WorkTableDocumentCounts是一个像这样的简单对象(带有getter和setter)

public class Tab2WorkTableDocumentCounts {

private Integer countTier1;
private Integer countTier2;
private Integer countTier3;
private Integer countTier4;
private Integer countTier5;
}

所以finalJspList是一个hashmap,包含一系列带有getter方法的对象,我试图调用它。我正在尝试如下,但它在IDE中给出了语法错误。我想为散列映射中的每个getCountTier1()调用类似entry.value的方法,并将其显示为HTML

任何建议,以帮助我清除这一点将不胜感激。

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


<c:forEach items="${finalJspList}" var="finalJspList">

                    <ul class="cust">
                      <li class="cust-name">${entry.key}</li>
                      <li class="lvl-1">${fn:entry.value().getCountTier1()}</li>
                      <li class="lvl-2 completed">${fn:entry.value().getCountTier2()}</li>
                      <li class="lvl-3">${fn:entry.value().getCountTier3()}</li>
                      <li class="lvl-4">${fn:entry.value().getCountTier4()}</li>
                      <li class="lvl-5">${fn:entry.value().getCountTier5()}</li>
                      <li class="export"><a href="#"><img src="http://www.liquisdesign.com/stage/jfit/images/export-icon.png" width="20px"></a></li>
                    </ul>
                </c:forEach>  

3 个答案:

答案 0 :(得分:3)

  • 按属性名称访问它们,而不是访问者 - ${entry.value.countTier1}
  • 设置var="entry"(而不是finalJspList
  • 摆脱fn:

从技术上讲,getter可以使用最新版本的EL,但如果只使用属性名称,代码看起来会更清晰。

答案 1 :(得分:0)

<c:out value="${finalJspList.countTier1}" escapeXml="false"/>无效吗?

答案 2 :(得分:0)

我怀疑这就是你的意思:

<c:forEach items="${finalJspList}" var="entry">

                <ul class="cust">
                  <li class="cust-name">${entry.key}</li>
                  <li class="lvl-1">${entry.value.countTier1}</li>
                  <li class="lvl-2 completed">${entry.value.countTier2}</li>
                  <li class="lvl-3">${entry.value.countTier3}</li>
                  <li class="lvl-4">${entry.value.countTier4}</li>
                  <li class="lvl-5">${entry.value.countTier5}</li>
                  <li class="export"><a href="#"><img src="http://www.liquisdesign.com/stage/jfit/images/export-icon.png" width="20px"></a></li>
                </ul>
            </c:forEach>  

您没有在任何地方声明entry变量,您需要在foreach中执行此操作。此外,您不应该在JSTL中调​​用方法,您应该引用属性名称,如上所述。