Jsp 如何在映射的值上直接使用jstl foreach?

Jsp 如何在映射的值上直接使用jstl foreach?,jsp,jstl,Jsp,Jstl,我尝试了以下方法,但令人惊讶的是,这些方法不起作用。值在jstl中根本不起作用: <c:forEach var="r" items="${applicationScope['theMap'].values}"> 映射的定义如下(随后保存到ServletContext): Map theMap=newlinkedhashmap(); 如何让它工作?实际上,我真的希望避免修改foreach循环的内部内容。那么您想迭代映射值吗Map没有getValues()方法,因此您的尝试无效。

我尝试了以下方法,但令人惊讶的是,这些方法不起作用。值在jstl中根本不起作用:

<c:forEach var="r" items="${applicationScope['theMap'].values}">

映射的定义如下(随后保存到ServletContext):

Map theMap=newlinkedhashmap();

如何让它工作?实际上,我真的希望避免修改foreach循环的内部内容。

那么您想迭代映射值吗
Map
没有
getValues()
方法,因此您的尝试无效。
给出了每个迭代的返回,而每个迭代又有
getKey()
getValue()
方法。因此,应采取以下措施:

<c:forEach var="entry" items="${theMap}">
    Map value: ${entry.value}<br/>
</c:forEach>
另见:

您可以在jstl中迭代映射,如下所示

<c:forEach items="${numMap}" var="entry">
  ${entry.key},${entry.value}<br/>
</c:forEach>

${entry.key},${entry.value}

如有必要,您也可以使用此类型

<c:forEach var="key" items="${theMap.keySet()}" varStatus="keyStatus">
    <c:set var="value" value="${theMap[key]}" />
</c:forEach>


可能重复@duffy:我知道OP想要在不知道键的情况下迭代所有值。@BalusC:是的,我知道:-),但无论如何我得到了键。这听起来可能很奇怪,但在本例中,键也包含在值中。中的键是值对象的主键。我现在完全迷路了。所以我的回答对你没有帮助?那么功能要求是什么呢?答案完全可以。没有getValues(),这就是我遇到的问题。必须解决这个问题:)
<c:forEach items="${numMap}" var="entry">
  ${entry.key},${entry.value}<br/>
</c:forEach>
<c:forEach var="key" items="${theMap.keySet()}" varStatus="keyStatus">
    <c:set var="value" value="${theMap[key]}" />
</c:forEach>