如何写 - jstl 标签 - 将映射键与 bean 属性进行比较

发布于 2024-12-08 21:19:41 字数 1119 浏览 0 评论 0 原文

我需要根据条件从 JSP 中 Map>> 类型的映射中检索列表值。条件是将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> 

但它在 标记上出错。

I need to retrieve list values from a map of type Map<String,List<HashMap<String, Object>>> in JSP based on a condition. The condition is to compare map key with bean property. Rightnow, I am doing multi level iterations. Firstly, I am iterating the map to retrieve key and an inner iterate loop to retrieve list values.

So far, I have like this

<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> 

But it errors on the <c:if> tag.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

下壹個目標 2024-12-15 21:19:41

您不需要迭代映射来比较键。您只需使用大括号符号 [] 即可通过动态键获取映射值,如 ${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>

You don't need to iterate over the map to compare keys. You just have to use the brace notation [] to get a map value by a dynamic key like so ${map[key]}.

So, this should do:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文