【问题标题】:Check a collection size with JSTL使用 JSTL 检查集合大小
【发布时间】:2010-10-25 12:16:36
【问题描述】:

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

类似:

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

</c:if>

【问题讨论】:

    标签: jsp collections jstl


    【解决方案1】:
    <c:if test="${companies.size() > 0}">
    
    </c:if>
    

    此语法仅适用于 EL 2.2 或更新版本(Servlet 3.0 / JSP 2.2 或更新版本)。如果您因为使用 JSPX 或 Facelets 而不是 JSP 而遇到 XML 解析错误,请使用 gt 而不是 &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>
    

    【讨论】:

    • 只是想指出,如果需要获取大小是为了确定集合是否为非空,那么“空”运算符很有用,因为它还检查空值。
    • 我同意马克的观点。为什么要为一个标签将更多杂物导入您的页面?使用 Mark 的解决方案,它更干净。
    • 同意 - 空的更干净。 @Joel 应该作为完整答案发布,以便可以投票和接受。我们这里的很多人(我)都是非 jsp 程序员,他们从 Google 和 SO 复制/粘贴 sn-ps,除了我们看到的第一段代码之外没有太多思考。
    • OP 询问了检查大小,不一定是检查它是否为空,我的回答还允许使用可用的完整标签库来考虑更复杂的场景。
    • 谢谢,伙计。这真的很有帮助,因为我只想在大小超过 1 时才显示列表。
    【解决方案2】:

    正如 @Joel 和 @Mark Chorley 在早期 cmets 中所建议的:

    ${empty companies}
    

    这会检查 null 和空列表/集合/数组。它不会让你得到长度,但它满足 OP 中的示例。如果你能侥幸成功,这比导入标签库及其像gt 这样的硬语法更干净。

    【讨论】:

      【解决方案3】:

      你可以这样使用

      ${fn:length(numList)}
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-08
          • 2010-11-07
          • 2011-04-04
          • 2012-08-28
          • 1970-01-01
          • 2013-03-27
          • 1970-01-01
          • 2020-11-28
          相关资源
          最近更新 更多