'JSTL continue, break inside foreach

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.



Solution 1:[1]

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.

Solution 2:[2]

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!

Solution 3:[3]

Or you can use EL choose statement

<c:forEach 
      var="List"
      items="${requestScope.DetailList}" 
      varStatus="counter"
      begin="0">

      <c:choose>
         <c:when test="${List.someType == 'aaa' || 'AAA'}">
           <!-- continue -->
         </c:when>
         <c:otherwise>
            Do something...     
         </c:otherwise>
      </c:choose>
    </c:forEach>

Solution 4:[4]

I like this idea of having the variable on the foreach, and setting it to the end of the loop to exit with a c:set ... if you structure a begin and an end for loop.

https://www.codesenior.com/en/tutorial/How-To-Break-Foreach-Loop-in-JSP

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Omak Al-Qantara
Solution 3 Evgenij Reznik
Solution 4 Greg