JSTL继续,打破了foreach

时间:2011-09-28 04:45:25

标签: jsp foreach jstl

我想在JSTL中的foreach中插入“continue”。如果有办法实现这一点,请告诉我。

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

  <c:if test="${List.someType == 'aaa' || 'AAA'}">
    <<<continue>>>
  </c:if>

我想在if条件中插入“continue”。

3 个答案:

答案 0 :(得分:28)

没有这样的事情。只需对实际想要显示的内容进行反向操作即可。所以不要做

<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>

而是做

<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>

<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>

请注意,我也修复了代码中的EL语法错误。

答案 1 :(得分:3)

我在可执行代码的末尾和循环内部使用Set解决了它

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

然后我使用该变量在下一次迭代中使用

跳过代码的执行
<c:if test="${continueExecuting}">

您可以随时将其设置为true ...

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

有关此标记的更多信息,请访问:JSTL Core Tag

享受!

答案 2 :(得分:2)

或者您可以使用EL 选择 声明

<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>