Java 包含不正确的值作为数组的一部分:D

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中输出数组,

我有一个带有一些ID的数组,名为
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

我也遇到了同样的问题,并通过以下方式解决:

  • 定义一个字符串,我将在其中放置ID:
    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
    仅适用于字符串,因此您可以使用它。

    为什么您确定数组不包含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)}">