我有一些具有一些属性的对象。属性只能是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语句。
我已经搜索了很多但仍未能解决这个问题。提前谢谢。
答案 0 :(得分:0)
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>
希望我有帮助