我有一些具有某些属性的对象的集合。属性只能是Type1
和Type2
两种类型。
我要做的就是检查对象是否具有Type1
的属性。
我正在使用以下代码:
<c:set var="properties" value="${obj.getProperties()}"/>
<c:set var="hasPropertyOfType1" value="false"/>
<c:forEach var="i" begin="0" end="${fn:length(properties) - 1}">
<c:if test="${properties.get(i).isOfType1() eq true}">
<c:set var="hasPropertyOfType1" value="true"/>
</c:if>
</c:forEach>
上面的代码实现了我想要的,但是效率很低,因为对象可能具有的属性数量很少。
所以我的问题是,一旦我将hasPropertyOfType1
设置为true
,该如何退出forEach循环。
我想到的一些方法,我不知道如何实现(或者甚至不可能):
1:将条件添加到forEach循环中,这将停止循环。2:将循环内的索引值递增到大于fn:length(properties)
的值。3:尽可能使用break语句。
我进行了很多搜索,但仍然无法弄清楚。预先感谢。
JSTL标记用于遍历集合。它不是要搜索集合。
也可以将<c:choose>
与<c:when>
和<c:otherwise>
一起使用这是一个例子。您也可以使用很多
<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>
希望我有帮助