Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSTL continue, break inside foreach

Tags:

foreach

jsp

jstl

I want to insert "continue" inside foreach in JSTL. Please let me know if there is a way to achieve this.

<c:forEach    var="List"   items="${requestScope.DetailList}"    varStatus="counter"   begin="0">    <c:if test="${List.someType == 'aaa' || 'AAA'}">     <<<continue>>>   </c:if> 

I want to insert the "continue" inside the if condition.

like image 626
Nazneen Avatar asked Sep 28 '11 04:09

Nazneen


2 Answers

There's no such thing. Just do the inverse for the content you actually want to display. So don't do

<c:forEach items="${requestScope.DetailList}" var="list">     <c:if test="${list.someType eq 'aaa' or list.someType eq 'AAA'}">         <<<continue>>>     </c:if>     <p>someType is not aaa or AAA</p> </c:forEach> 

but rather do

<c:forEach items="${requestScope.DetailList}" var="list">     <c:if test="${not (list.someType eq 'aaa' or list.someType eq 'AAA')}">         <p>someType is not aaa or AAA</p>     </c:if> </c:forEach> 

or

<c:forEach items="${requestScope.DetailList}" var="list">     <c:if test="${list.someType ne 'aaa' and list.someType ne 'AAA'}">         <p>someType is not aaa or AAA</p>     </c:if> </c:forEach> 

Please note that I fixed an EL syntax error in your code as well.

like image 154
BalusC Avatar answered Sep 27 '22 16:09

BalusC


I solved it using Set at the end of my executable code and inside of the loop

<c:set var="continueExecuting" scope="request" value="false"/> 

then I used that variable to skip the execution of the code in the next iteration using

<c:if test="${continueExecuting}"> 

you can set it back to true at any time...

<c:set var="continueExecuting" scope="request" value="true"/> 

more on this tag at: JSTL Core Tag

enjoy!

like image 41
Omak Al-Qantara Avatar answered Sep 27 '22 16:09

Omak Al-Qantara