Как написать- тег jstl - сравнение ключа карты с элементом стояков - PullRequest
1 голос
/ 06 октября 2011

Мне нужно получить значения списка из карты типа Map<String,List<HashMap<String, Object>>> в JSP на основе условия. Условием является сравнение ключа карты с переменной formbean. Хорошо, я делаю многоуровневые итерации. Во-первых, я итерирую карту для получения ключа и внутренний цикл итерации для получения значений списка.

Пока у меня вот так

<c:forEach items="${addRatingExceptionForm.ratingsMap}" var="entry"> 
  <c:set var="key" value="${entry.key}"/>
  <jsp:useBean id="key" type="java.lang.String" />
  <c:if test= '<%= key.equalsIgnoreCase(addRatingExceptionForm.getRatingElementDropdown()) %> ' >
    <c:forEach items="${entry.value}" var="item"> 
      <li>
        <input type="checkbox" id="addRatingException_timeline_earlyAsn" value="${item.RatingInstanceValue}"  class="ajaxContentTrigger  method_Load_exceptionType ajaxLoadingTrigger|addRatingException_exceptionType clearErrors"/>  
        <label for="addRatingException_timeline_earlyAsn">${item.RatingInstanceValue}</p></label>   
      </li>
    </c:forEach>
  </c:if>
</c:forEach> 

Но это ошибка на теге <c:if>.

1 Ответ

0 голосов
/ 06 октября 2011

Вам не нужно перебирать карту для сравнения ключей. Вам просто нужно использовать скобку [], чтобы получить значение карты с помощью динамического ключа, например ${map[key]}.

Итак, это должно сделать:

<c:forEach items="${addRatingExceptionForm.ratingsMap[addRatingExceptionForm.ratingElementDropdown]}" var="item"> 
  <li>
    <input type="checkbox" id="addRatingException_timeline_earlyAsn" value="${item.RatingInstanceValue}" class="ajaxContentTrigger method_Load_exceptionType ajaxLoadingTrigger|addRatingException_exceptionType clearErrors" />
    <label for="addRatingException_timeline_earlyAsn">${item.RatingInstanceValue}</p></label> <!-- wtf is that </p> doing there? -->
  </li>
</c:forEach>
...