gpt4 book ai didi

list - JSTL 集合和列表 - 检查集合中是否存在项目

转载 作者:行者123 更新时间:2023-12-03 09:22:59 25 4
gpt4 key购买 nike

我的 session 中有一个 Java 集, session 中有一个变量。我需要能够判断该变量是否存在于集合中。

我想使用 Java 为 Lists 和 Sets 提供的 contains ( Object ) 方法来测试该对象是否存在于集合中。

在 JSTL 中可以这样做吗?如果是这样,如何? :)

谢谢,
亚历克斯

最佳答案

您可以使用 JSTL 标签执行此操作,但结果不是最佳的:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>

<jsp:useBean id="numbers" class="java.util.HashSet" scope="request">
<%
numbers.add("one");
numbers.add("two");
numbers.add("three");
%>
</jsp:useBean>

<c:forEach items="${numbers}" var="value">
<c:if test="${value == 'two'}">
<c:set var="found" value="true" scope="request" />
</c:if>
</c:forEach>
${found}

</body>
</html>

更好的方法是使用自定义函数:
package my.package;
public class Util {

public static boolean contains(Collection<?> coll, Object o) {
if (coll == null) return false;
return coll.contains(o);
}

}

这是在 TLD 文件 ROOT/WEB-INF/tag/custom.tld 中定义的:
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<tlib-version>1.0</tlib-version>
<short-name>myfn</short-name>
<uri>http://samplefn</uri>
<function>
<name>contains</name>
<function-class>my.package.Util</function-class>
<function-signature>boolean contains(java.util.Collection,
java.lang.Object)</function-signature>
</function>
</taglib>

然后可以将该函数导入到您的 JSP 中:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="myfn" uri="http://samplefn"%>
<html>
<body>

<jsp:useBean id="numbers" class="java.util.HashSet" scope="request">
<%
numbers.add("one");
numbers.add("two");
numbers.add("three");
%>
</jsp:useBean>

${myfn:contains(numbers, 'one')}
${myfn:contains(numbers, 'zero')}

</body>
</html>

EL 的下一个版本(在 JEE6 中到期)应该允许更直接的形式:
${numbers.contains('two')}

关于list - JSTL 集合和列表 - 检查集合中是否存在项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1076679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com