今天写JSP的时候,发现要双重循环判断一个东西 用jstl标签写的很不习惯 ,甚至没有类似JAVA的continue跳出单个循环的功能,则想到能不能设置变量做一个类似continue的功能和break功能。
如下为continue
<c:forEach items="${FirstNum}" varStatus="Fstatus" var="a">
//重新把Continue设置为0 在外面的forEach可继续遍历
<c:set var="Continue" value="0"/>
<c:forEach items="${SecondNum}" varStatus="Sstatus" var="b" >
<c:if test="${Continue=0}">
//符合条件执行某操作
<c:if test="${a.id eq b.id}" >
//把Continue设置为1 直接跳出当前forEach 类似continue
<c:set var="Continue" value="1"/>
</c:if>
</c:if>
</c:forEach>
</c:forEach>
但是循环还是在循环 只是逻辑上像是"跳出循环" , 不过能抓到老鼠就是好猫。
如下为break
<c:forEach items="${FirstNum}" var="a" end="exitID">
<c:if test="${a.id == 1}">
//设置end属性exitID为0,强制跳出循环(break)
<c:set var="exitID" value="0"></c:set>
</c:if>
</c:forEach>
break的话稍微参考了一下别人的写法,大致是把<c:forEach>标签里的end属性设置为0 强行停止循环,但好像只适用与单次循环,我用的是双重循环,需要跳出第二层循环继续第一层的循环,这种方法不适合双重遍历,个人觉得比较适合单个循环遍历的跳出循环。