如何使用JSTL选择集合的第一个元素?

Ser*_*Amo 51 jstl java-ee

我设法使用下一个代码,但必须有一个更简单的方法.

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


<c:if test="${fn:length(attachments) > 0}">
    <c:forEach var="attachment" items="${attachments}" varStatus="loopCount">
        <c:if test="${loopCount.count eq 1}">
         attachment.id
        </c:if>
    </c:forEach>
</c:if>
Run Code Online (Sandbox Code Playgroud)

kgi*_*kis 85

您可以使用array []运算符访问各个元素:

<c:out value="${attachments[0].id}" />
Run Code Online (Sandbox Code Playgroud)

这适用于数组和列表.它不适用于地图和集合.在这种情况下,您必须将元素的键放在括号内.

  • 以上内容仅适用于具有get(int i)方法的集合类型.PersistentSet可以实现吗? (7认同)
  • 我得到下一个错误javax.el.PropertyNotFoundException:在类型org.hibernate.collection.PersistentSet上找不到属性'0' (5认同)
  • 对于`java.util.Set`,您需要先将其转换为数组,如`<c:out value ="$ {bean.set.toArray()[0] .propertyIfAny}"/>`.`java.util.Set`是一个无序列表,它没有像`java.util.List`这样的索引. (4认同)

小智 37

集合没有订单,但如果您仍想获得第一个元素,则可以使用以下内容:

<c:forEach var="attachment" items="${attachments}" end="0">
     <c:out value="${attachment.id} />
</c:forEach>
Run Code Online (Sandbox Code Playgroud)


小智 8

仅适用于数组和列表,不适用于集合.


You*_*sef 8

因为我的Set中只有一个元素,所以顺序并不重要所以我可以像这样访问第一个元素:

${ attachments.iterator().next().id }
Run Code Online (Sandbox Code Playgroud)