JSP, Java, Spring, перебирая HashMap и вызывая базовый метод getter из его значения? - PullRequest
0 голосов
/ 08 марта 2011

Я немного растерялся из-за того, как это сделать правильно, я посылаю переменную в мою модель в Spring, которая выглядит так:

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

Где Tab2WorkTableDocumentCounts - простой подобный объект (с геттерами и сеттерами)

public class Tab2WorkTableDocumentCounts {

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

Итак, finalJspList - это хеш-карта, содержащая серию объектов с методом 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 ]

3 голосов
/ 08 марта 2011
  • доступ к ним по именам свойств, а не по получателям - ${entry.value.countTier1}
  • set var="entry" (вместо finalJspList)
  • избавиться от fn:

Технически, геттеры будут работать с последней версией EL, но код выглядит чище, если вы просто используете имена свойств.

0 голосов
/ 08 марта 2011

Я подозреваю, что это было то, что вы имели в виду:

<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, вы должны ссылаться на имена свойств, как указано выше.

0 голосов
/ 08 марта 2011

не работал <c:out value="${finalJspList.countTier1}" escapeXml="false"/> не работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...