【问题标题】:Loop through a Map with JSTL [duplicate]使用 JSTL 循环遍历地图 [重复]
【发布时间】:2011-02-20 08:35:01
【问题描述】:

我希望 JSTL 循环通过 Map<String, String> 并输出键的值及其值。

例如,我有一个Map<String, String>,它可以有任意数量的条目,我想使用 JSTL 循环遍历这个映射并输出键和它的值。

我知道如何使用密钥${myMap['keystring']} 访问值,但是如何访问密钥?

【问题讨论】:

标签: map loops jstl


【解决方案1】:

像这样:

<c:forEach var="entry" items="${myMap}">
  Key: <c:out value="${entry.key}"/>
  Value: <c:out value="${entry.value}"/>
</c:forEach>

【讨论】:

  • 其他人注意:不要尝试在forEach循环“param”中命名var
  • 如何使用 forEach 动态更改值。例子。 键: 值:
【解决方案2】:

你可以像这样循环遍历一个哈希映射

<%
ArrayList list = new ArrayList();
TreeMap itemList=new TreeMap();
itemList.put("test", "test");
list.add(itemList);
pageContext.setAttribute("itemList", list);                            
%>

  <c:forEach items="${itemList}" var="itemrow">
   <input  type="text"  value="<c:out value='${itemrow.test}'/>"/>
  </c:forEach>               

更多 JSTL 功能请看here

【讨论】:

  • 不要使用脚本。他们很糟糕。
  • @tad 我也听说过。但为什么呢?
  • @TJ- 作为一般规则,在您的模板中加入强大的逻辑没有什么好的理由;它们很难调试,它们混合了范式,并且可以产生意想不到的结果。此外,JSTL aready 提供了一种干净地迭代地图的工具:forEach 标记。
  • @tad 他显然在使用脚本来设置他的测试数据。这是一个非常好的答案
  • @jk:我同意。这里的反对票非常可笑。此外,scriptlet 可以产生意外结果的想法对我来说毫无意义。它们并不漂亮,但 1+1 总是等于 2,除非有一些我不知道的特定场景。
猜你喜欢
  • 2013-12-06
  • 2014-12-04
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 2021-04-14
  • 2015-12-30
  • 2015-04-13
相关资源
最近更新 更多