Java 包含不正确的值作为数组的一部分:D
我有一个带有一些ID的数组,名为Java 包含不正确的值作为数组的一部分:D,java,arraylist,jstl,Java,Arraylist,Jstl,我有一个带有一些ID的数组,名为arraylistid: [2176117] 我循环并检查每一个元素的ID是否在数组中 因此,在循环中的某个地方,我有: <c:if test="${arrayListIDs.contains((Integer) product.productID)}"> ... </c:if> ... 对于值11它返回true我想知道这是如何实现的 我有117而不是11 还是我遗漏了什么?如果您确信列表中没有元素11,为什么不在JSTL中输出数组,
arraylistid
:
[2176117]
我循环并检查每一个元素的ID是否在数组中
因此,在循环中的某个地方,我有:
<c:if test="${arrayListIDs.contains((Integer) product.productID)}">
...
</c:if>
...
对于值11
它返回true
我想知道这是如何实现的
我有117
而不是11
还是我遗漏了什么?如果您确信列表中没有元素
11
,为什么不在JSTL中输出数组,看看您在该阶段得到了什么
更好的方法是,尝试以不同的方式运行数组,而不是使用contains()
找到11个
查看您在这里得到的输出。原因是
ArrayList.contains
是JSF
的一部分,而不是JSP
或JSTL
。而且您的环境不支持JSF
我也遇到了同样的问题,并通过以下方式解决:
string productsIDs=“|”代码>
while(xxx.hasNext()) {
[SomeType] product = (SomeType) itr.next();
productsIDs += product.getProductID();
productsIDs += "|";
}
|1 | 2 | 33 | 400 |
的字符串
<c:if test="${fn:contains(productsIDs, currentProductID)}">
fn:contains
仅适用于字符串,因此您可以使用它。为什么您确定数组不包含11或您正在测试的值实际上是11?因为我已经打印了这两个值。。。看看这个:。。。我已经打印了数组,上面有ID,下面有产品ID。(AAA和BBB只是虚拟文本。)您能发布更多的代码吗,比如if语句的大致体是什么,以及产品来自数据库的什么地方。这是一个项目数组,我在循环它们,在循环中我检查它的ID,如果它是列表数组的一部分。我理解,对不起,我没有说清楚,我的意思是从某种类型:从请求,从另一个数组等。为什么你确定它在11时返回true?我已经打印了数组和每个元素的ID:。。。数组位于顶部,产品ID位于底部。(AAA和BBB是虚拟文本。)这起作用了。。。但这样我就有了嵌套循环。这是我想要避免的。哦,我终于明白了,ArrayList是字符串,不是吗?它是数组列表。。。不是字符串。。。声明类似于ArrayList arrayListIDs=new ArrayList()
然后使用几个arraylistid.add(…)
我正在添加值。
<c:if test="${fn:contains(productsIDs, currentProductID)}">