【问题标题】:Access the size of a collection in JSP/JSTL/EL [duplicate]在 JSP/JSTL/EL 中访问集合的大小 [重复]
【发布时间】:2011-04-04 12:28:23
【问题描述】:

我的 JSP 页面中有一个名为 services 的 List 变量。如果列表中有超过 1 个元素,我需要在页面上添加一些标记。

我想做的是……

<c:if test="${services.size() gt 1}">
  <!-- markup... -->
</c:if>

但是你不能在 EL 中调用 Java 对象的方法(我想这可能是我后悔这个事实的第 364823782 次)。您只能通过删除“get”来访问 Java 对象上的 getters,例如${user.name} 用于具有 getName() 方法的 User 类。

评估此测试的正确方法是什么?

【问题讨论】:

    标签: java jsp jstl el


    【解决方案1】:

    在jsp文件中包含标签库

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

    使用

    <c:if test="${fn:length(services) gt 1}">
    <!-- markup... -->
    </c:if>
    

    【讨论】:

      【解决方案2】:

      您正在寻找fn:length(services)。记得定义 fn 命名空间。

      http://download.oracle.com/javaee/5/tutorial/doc/bnalg.html

      【讨论】:

      • 这是正确的答案,但这不是我真正希望得到的答案。多么痛苦。为什么我们不能用 Groovy 或 Rhino 而不是 EL...
      • JSP 就是这样。我强烈建议升级到 JSF 和 facelets。
      • Here's 一篇关于同一问题的精彩博文(得出相同的解决方案)。我同意 JSP/EL 很烂,可以推荐升级到 Wicket。 ;-)
      • @Jonik,与 Wicket 相比,JSF 的主要优势在于它是标准 Java EE 6 的一部分。这对您来说可能很重要,也可能不重要。
      • @DrewWills 似乎 EL(你的表达式所用的语言)支持 Java EE 6 版本中的方法调用。这是一个选项吗?
      猜你喜欢
      • 2021-08-23
      • 2011-06-24
      • 1970-01-01
      • 2016-11-23
      相关资源
      最近更新 更多