如何编写<c:if> - jstl标签 - 比较map key与bean属性

问题描述 投票:0回答:1

我需要根据条件从 JSP 中的

Map<String,List<HashMap<String, Object>>>
类型的映射中检索列表值。条件是将map key 与bean 属性进行比较。现在,我正在进行多级迭代。首先,我迭代映射以检索键和内部迭代循环以检索列表值。

到目前为止,我有这样的

<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>
标签上出错。

jsp jstl
1个回答
0
投票

您不需要迭代映射来比较键。您只需使用大括号符号

[]
即可通过动态键获取映射值,如下所示
${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>
© www.soinside.com 2019 - 2024. All rights reserved.