2016-03-25 11 views
0

Ich habe eine c: ForEach Schleife in meiner JSP-Datei, wo ich Anfang und Ende-Attribut verwenden, um die Schleife auf einige feste Anzahl zu beschränken.Wie man c: forErch Ende Wert dynamisch ändert

Angenommen, ich habe die Liste von Bannern (etwa 5), ​​aber ich möchte nur Top-3 Banner zeigen dann i beginnen können, Ende wie dieses

count = 3

<c:forEach items="${banners}" var="banner" varStatus="status" begin="0" end="${count}"> 
    <c:choose> 
    <c:when test="${ycommerce:evaluateRestrictions(banner)}"> 
     <!-- code here --> 
    </c:when> 
    <c:otherwise> 
     <c:set var="count" value="${count+1}" /> 
    </c:otherwise>   
</c:forEach> 

Hier in dem obigen Code, Wenn das Banner 1 eine Beschränkung hat, versuche ich, den Zählwert plus eins (+1) zu erhöhen, so dass end dynamisch auf eins erhöht wird.

Aber es funktioniert nicht. Obwohl die Anzahl zunimmt, wird die for-Schleife nicht reflektiert. eine Lösung zu geben, so dass für Schleife Änderung Endwert dynamisch

Ich versuchte Umfang als auch mit Attribut aber nichts passierte

<c:set var="count" value="${count+1}" scope="page" /> 

Bitte helfen Sie mir.

Wenn es nicht möglich ist, schlagen Sie mir bitte eine andere Alternative vor.

+0

@YassinHajaj Sorry, das wusste ich nicht. – user2004685

Antwort

1

${count} wird am Anfang der Schleife ausgewertet, daher hat das Ändern des Werts count während der Schleife keine Auswirkung.

Beachten Sie auch, dass, anders als normalerweise für Java, end inklusive ist. Wenn Sie also 3 Iterationen verwenden möchten, verwenden Sie start="0" end="2". Wenn Sie sowohl filtern als auch begrenzen möchten, können Sie begin/end nicht verwenden. Stattdessen tun Sie es selbst in der Schleife:

<c:set var="count" value="${0}" /> 
<c:forEach items="${banners}" var="banner" varStatus="status"> 
    <c:if test="${count lt 3 and ycommerce:evaluateRestrictions(banner)}"> 
     <c:set var="count" value="${count+1}" /> 
     <!-- code here --> 
    </c:if>   
</c:forEach> 
+0

Zu schnell für mich –

+0

ja ich tat das gleiche danach, und Sie gaben auch die gleiche Antwort :) –

Verwandte Themen