Jak wybrać pierwszy element zestawu za pomocą JSTL?

Udało mi się to zrobić następnym kodem, ale musi być łatwiejszy sposób.

<%@ 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>
Author: Sergio del Amo, 2009-06-16

9 answers

Można uzyskać dostęp do poszczególnych elementów za pomocą operatora array []:

<c:out value="${attachments[0].id}" />

To będzie działać dla tablic i list. Nie będzie działać na mapach i zestawach. W takim przypadku należy umieścić klucz elementu wewnątrz nawiasów.

 84
Author: kgiannakakis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-04 08:30:59

Zestawy nie mają kolejności, ale jeśli nadal chcesz uzyskać pierwszy element, możesz użyć następującego:

<c:forEach var="attachment" items="${attachments}" end="0">
     <c:out value="${attachment.id} />
</c:forEach>
 36
Author: Tim Tsu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-26 21:53:23

Działa tylko dla tablic i List, nie dla set.

 8
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-18 16:28:53

Ponieważ mam tylko jeden element w moim zestawie kolejność nie jest ważna, więc mogę uzyskać dostęp do pierwszego elementu w ten sposób:

${ attachments.iterator().next().id }
 5
Author: Youssef,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-23 16:01:36
 3
Author: lanoxx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-11 15:45:25

Jeśli chcesz tylko pierwszy element zbioru (i jesteś pewien, że istnieje co najmniej jeden element), możesz wykonać następujące czynności:

<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>
 3
Author: Ninju Bohra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-07 20:29:07

Możesz użyć API Stream EL 3.0.

<div>${attachments.stream().findFirst().get()}</div>

Ostrożnie! API El 3.0 Stream zostało ukończone przed API Java 8 Stream i jest INNE niż to. Nie mogą używać obu API, ponieważ złamie to kompatybilność wsteczną.

 1
Author: George Siggouroglou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-20 11:42:21

Using ${mySet.toArray [0]} nie działa.

Myślę, że nie jest to możliwe bez posiadania pętli forEach przynajmniej jednej iteracji.

 0
Author: prx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-07 11:33:49

Użycie begin I end wydawało mi się działać, aby wybrać zakres elementów. To daje mi trzy oddzielne listy. Pierwsza lista z poz. 1-9, druga z poz. 10-18, a ostatnia z poz. 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>
 0
Author: addzies,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-20 16:11:36