我有一些名为arrayListIDs
[2176, 117]
如果它的ID在数组中,我会循环并检查每一个。
所以我在循环中的某个地方:
<c:if test="${arrayListIDs.contains((Integer) product.productID)}">
...
</c:if>
对于值11
,它返回true
我想知道这是如何实现的?
我有117
而不是11
...
或者我错过了什么?
答案 0 :(得分:1)
原因是ArrayList.contains
属于JSF
而非JSP
或JSTL
。并且您的环境不支持JSF
。
我遇到了同样的问题并以这种方式解决了这个问题:
String productsIDs = "|";
。遍历您的数据并将ID放在此字符串中:
while(xxx.hasNext()) {
[SomeType] product = (SomeType) itr.next();
productsIDs += product.getProductID();
productsIDs += "|";
}
这样,最后我有一个ID为|1|2|33|400|
的字符串。
之后你会这样检查:
<c:if test="${fn:contains(productsIDs, currentProductID)}">
fn:contains
仅适用于字符串,因此您可以使用它。
答案 1 :(得分:0)
如果您确信在列表中没有元素11
,为什么不在JSTL中输出数组并查看您在该阶段获得的内容?
更好的是,尝试以不同的方式运行数组,而不是使用contains()
<c:forEach var="item" items="${arrayListIDs}">
<c:if test="${item eq 11}">
<h1> Found 11 </h1>
</c:if>
</c:forEach>
看看你在这里得到什么输出。