Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JSP/EL/JSTL检查集合是否包含项_Jsp_Collections_Jstl_El - Fatal编程技术网

如何使用JSP/EL/JSTL检查集合是否包含项

如何使用JSP/EL/JSTL检查集合是否包含项,jsp,collections,jstl,el,Jsp,Collections,Jstl,El,我正在使用Java8、Tomcat8、Servlet3.1.0、JSP2.0和JSTL1.2 我希望能够做到以下几点。但是,它不起作用 <c:forEach var="item" items="${itemList}" varStatus="status"> <tr> <td>${status.index + 1}</td> <td>${item.itemCode}</td> <td>

我正在使用Java8、Tomcat8、Servlet3.1.0、JSP2.0和JSTL1.2

我希望能够做到以下几点。但是,它不起作用

<c:forEach var="item" items="${itemList}" varStatus="status">
  <tr>
    <td>${status.index + 1}</td>
    <td>${item.itemCode}</td>
    <td>${item.displayName}</td>
    <td>
      <c:choose>
        <c:when test="${user.favourites.contains(item)}">Yes</c:when>
        <c:otherwise>No</c:otherwise>
      </c:choose>
    </td>
  </tr>
</c:forEach>

servlet api
jsp api
由Tomcat提供。
jstl的版本是否正确?

您可以使用jstl标记库中提供的contains函数。请查看更多详细信息@

这将对您有所帮助。

事实证明它确实有效,但我手头还有另一个问题

我的实体(
用户
)来自Hibernate,来自两个不同查询中的两个不同DAO,因此
收藏夹
列表中的
项列表中的
是不同的对象

我没有在我的
User
Item
类中实现(重写)hashCode()
equals()
方法,因此
Collection.contains()
只是查看对象标识,而不是等价性

只要我实现了
hashCode()
equals()
方法,它就如预期的那样工作了


我发现这一点的方式是,我决定实现一个自定义TLD函数,该函数调用
集合.contains(…)
方法,然后注意到,即使是返回
false
fn:contains
也是用于检查一个字符串是否包含另一个字符串中的值,不是为了检查集合是否包含给定项您可以参考此www.experts-exchange.com/Programming/Languages/Java/J2EE/Q_24847712.html,第4条注释使用此contains方法进行相同的检查。我怀疑它可能起作用,因为数组的字符串化表示包含对象的字符串化表示。实际上,它做了一个
array.toString().contains(object.toString())
。这是一个很方便的侥幸,不是我想依赖的东西。如果子字符串的一个值与另一个值匹配错误。
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>3.1.0</version>
   <scope>provided</scope>
  </dependency>

  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jsp-api</artifactId>
   <version>2.0</version>
   <scope>provided</scope>
  </dependency>

  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jstl</artifactId>
   <version>1.2</version>
  </dependency>