如何使用JSTL检查集合的大小?

喜欢的东西:

<c:if test="${companies.size() > 0}">

</c:if>

当前回答

正如@Joel和@Mark Chorley在之前的评论中所建议的:

${empty companies}

检查空列表/集合/数组。它没有给你长度,但它满足op中的例子。如果你能摆脱它,这只是比导入一个标签库和它的硬壳语法gt更干净。

其他回答

<c:if test="${companies.size() > 0}">

</c:if>

此语法仅适用于EL 2.2或更新版本(Servlet 3.0 / JSP 2.2或更新版本)。如果因为使用JSPX或Facelets而不是JSP而面临XML解析错误,那么使用gt而不是>。

<c:if test="${companies.size() gt 0}">

</c:if>

如果您确实面临EL解析错误,那么您可能使用了一个太旧的EL版本。您将需要JSTL fn:length()函数。从文档中可以看到:

length(java.lang.Object) -返回集合中的项数,或字符串中的字符数。

把它放在JSP页面的顶部,以允许fn名称空间:

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

或者如果你正在使用JSPX或Facelets:

<... xmlns:fn="http://java.sun.com/jsp/jstl/functions">

在你的页面中这样使用:

<p>The length of the companies collection is: ${fn:length(companies)}</p>

所以要测试一个集合的长度:

<c:if test="${fn:length(companies) gt 0}">

</c:if>

或者,对于这种特定的情况,你也可以简单地使用EL空操作符:

<c:if test="${not empty companies}">

</c:if>

正如@Joel和@Mark Chorley在之前的评论中所建议的:

${empty companies}

检查空列表/集合/数组。它没有给你长度,但它满足op中的例子。如果你能摆脱它,这只是比导入一个标签库和它的硬壳语法gt更干净。

你可以这样用

${fn:length(numList)}

使用${fn:length(companies) > 0}检查大小。返回一个布尔值