【发布时间】:2010-10-25 12:16:36
【问题描述】:
如何使用 JSTL 检查集合的大小?
类似:
<c:if test="${companies.size() > 0}">
</c:if>
【问题讨论】:
标签: jsp collections jstl
如何使用 JSTL 检查集合的大小?
类似:
<c:if test="${companies.size() > 0}">
</c:if>
【问题讨论】:
标签: jsp collections jstl
<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() 函数。来自the documentation:
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 empty 运算符:
<c:if test="${not empty companies}">
</c:if>
【讨论】:
正如 @Joel 和 @Mark Chorley 在早期 cmets 中所建议的:
${empty companies}
这会检查 null 和空列表/集合/数组。它不会让你得到长度,但它满足 OP 中的示例。如果你能侥幸成功,这比导入标签库及其像gt 这样的硬语法更干净。
【讨论】:
你可以这样使用
${fn:length(numList)}
【讨论】:
使用${fn:length(companies) > 0} 检查大小。这将返回一个布尔值
【讨论】: