JSTL继续,打破了foreach

Naz*_*een 21 foreach jsp 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>
Run Code Online (Sandbox Code Playgroud)

我想在if条件中插入"continue".

Bal*_*usC 29

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

<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>
Run Code Online (Sandbox Code Playgroud)

而是做

<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>
Run Code Online (Sandbox Code Playgroud)

要么

<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>
Run Code Online (Sandbox Code Playgroud)

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


小智 5

我在可执行代码末尾和循环内部使用 Set 解决了这个问题

<c:set var="continueExecuting" scope="request" value="false"/>
Run Code Online (Sandbox Code Playgroud)

然后我使用该变量在下一次迭代中跳过代码的执行

<c:if test="${continueExecuting}">
Run Code Online (Sandbox Code Playgroud)

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

<c:set var="continueExecuting" scope="request" value="true"/>
Run Code Online (Sandbox Code Playgroud)

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

享受!