如何使用JSTL获取HashMap的大小

16

有没有办法使用JSTL获取Map的大小?我尝试了${myMap.size}但不起作用。

5个回答

30

得到了解决方案: 使用JSTL函数。

<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

然后像这样使用:

  <c:if test="${fn:length(myMap) > 1 }">

12
${myMap.size}

这段代码无法正常工作是因为它被EL解析器翻译为myMap.getSize()。

尝试使用以下代码:

${myMap.size()}

它应该可以工作。


2
但是 ${myMap.size()} 是有效的。在 EL 中,#{myMap.size} 被转换为 myMap.getSize()! - The-MeLLeR
${myMap.size()} 不适用于1.6版本,不过也没人在意 ;) - slim
map.size()core:if test评估中无法工作 - 不确定您是如何证明的。 - ha9u63a7

7
JSTL的length函数适用于Collection,但不确定是否适用于Map。或许值得一试。

一个例子,一个链接,_什么东西_会让这个答案更有帮助。 - Madbreaks

0

如果你只想打印计数 - 那么你必须使用 fn 标签。但是,如果你想处理映射中的所有项目或者根据可用项目的数量执行某些操作,那么只使用核心 JSTL 标签尝试这个:

<c:if test="${mapVar != null}"/>
<c:forEach var="mapEntry" items="${mapVar}">
<!-- if there is any entry in the map do something -->
</c:forEach>
</c:if>

以上代码等同于Java代码

if (maVar != null && mapVar.size() >= 1) {
    // do something
}

是的,你不能像这样打印出大小,但你仍然可以处理项目存在的信息。

我更喜欢这个解决方案,因为那个SUN网址会出错,所以上面的对我有用。


0

您可以查看一个示例来查找JSTL HashMap大小这里

我们在这里使用HashMap size方法

${numMap.size()}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接