我在JSP页面中遇到了一些问题。我试图循环一组项目,并进行比较以确保我正在查看的当前值与先前的值不同。代码如下所示:
<c:set var="previousCustomer" value=""/>
<c:forEach items="${customerlist}" var="customer" varStatus="i">
<c:choose>
<c:when test="${(customer.account) != (previousCustomer)}">
[do some stuff]
</c:when>
<c:otherwise>
[do other stuff]
</c:otherwise>
</c:choose>
<c:set var="previousCustomer" value="${customer.account}"/>
</c:forEach>
但是,当我写出值时,previousCustomer在设置为customerlist.account后总是返回与customerlist.account相同的值。有没有办法检查循环中项目的当前值与先前的值?
答案 0 :(得分:0)
您可以使用varStatus
属性和EL括号表示法
<c:forEach items="${customerlist}" var="customer" varStatus="i">
<c:choose>
<c:when test="${not i.first and customerlist[i.index] eq customerlist[i.index - 1]}">
[do some stuff]
</c:when>
<c:otherwise>
[do other stuff]
</c:otherwise>
</c:choose>
</c:forEach>
因此,使用varStatus
first
属性检查您是否正在进行第一次迭代(因为没有先前的对象):
not i.first
然后根据varStatus
index
属性进行比较
customerlist[i.index] eq customerlist[i.index - 1]
如果您确定列表中有更多项目,则可以使用begin="1"
中的c:forEach
跳过列表中的第一项。