我设法使用下一个代码,但必须有一个更简单的方法。
<%@ 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>
答案 0 :(得分:84)
您可以使用array []运算符访问各个元素:
<c:out value="${attachments[0].id}" />
这适用于数组和列表。它不适用于地图和集合。在这种情况下,您必须将元素的键放在括号内。
答案 1 :(得分:37)
集合没有订单,但如果您仍想获得第一个元素,则可以使用以下内容:
<c:forEach var="attachment" items="${attachments}" end="0">
<c:out value="${attachment.id} />
</c:forEach>
答案 2 :(得分:8)
仅适用于数组和列表,不适用于set。
答案 3 :(得分:7)
因为我的Set中只有一个元素,所以顺序并不重要所以我可以像这样访问第一个元素:
${ attachments.iterator().next().id }
答案 4 :(得分:3)
查看here以获取statusVar变量的描述。
您可以执行类似下面的操作,其中“status”变量包含迭代的当前状态。如果您需要第一个和最后一个iteraton的特殊注释,这非常有用。在下面的情况下,我想省略最后一个标记后面的逗号。当然,您可以将status.last
替换为status.first
,以便在第一次尝试时执行一些特殊操作:
<td>
<c:forEach var="tag" items="${idea.tags}" varStatus="status">
<span>${tag.name not status.last ? ', ' : ''}</span>
</c:forEach>
</td>
可能的选项包括: current, index, count, first, last, begin, step,
和 end
答案 5 :(得分:3)
如果您只想要一个集合的第一个元素(并且您确定至少有一个元素),您可以执行以下操作:
<c:choose>
<c:when test="${dealership.administeredBy.size() == 1}">
Hello ${dealership.administeredBy.iterator().next().firstName},<br/>
</c:when>
<c:when test="${dealership.administeredBy.size() > 1}">
Hello Administrators,<br/>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
答案 6 :(得分:1)
您可以使用EL 3.0 Stream API。
<div>${attachments.stream().findFirst().get()}</div>
小心! EL 3.0 Stream API在Java 8 Stream API之前完成,并且与此不同。他们不能同时使用api,因为它会打破后向兼容性。
答案 7 :(得分:0)
使用$ {mySet.toArray [0]}不起作用。
如果没有forEach循环至少一次迭代,我认为不可能。
答案 8 :(得分:0)
使用begin和end似乎对我有用,可以选择一系列元素。这给了我三个单独的列表。第一个列表包含项目1-9,第二个列表包含项目10-18,最后一个列表包含项目11-25。
<ul>
<c:forEach items="${actionBean.top25Teams}" begin="0" end="8" var="team" varStatus="counter">
<li>${team.name}</li>
</c:forEach>
</ul>
<ul>
<c:forEach items="${actionBean.top25Teams}" begin="9" end="17" var="team" varStatus="counter">
<li>${team.name}</li>
</c:forEach>
</ul>
<ul>
<c:forEach items="${actionBean.top25Teams}" begin="18" end="25" var="team" varStatus="counter">
<li>${team.name}</li>
</c:forEach>
</ul>
答案 9 :(得分:0)
如果它是一个集合 const focusHandler = (e) => {
// handle the event here!
}
将不起作用。改用这个
${attachments[0].id}
或 ${attachments.first().key}