首先为此创建一个 EL 函数。 Facelets 的启动示例可以在 this answer 中找到,另一个 JSP 的启动示例可以在 our EL wiki page 底部附近的某处找到。
public static boolean contains(Object[] array, Object item) {
if (array == null || item == null) {
return false;
}
for (Object object : array) {
if (object != null && object.toString().equals(item.toString())) {
return true;
}
}
return false;
}
(或者如果您使用 JSF 实用程序库 OmniFaces,请使用其 of:contains(),尽管它仅适用于 Facelets,不适用于已弃用的 JSP)
然后按如下方式使用:
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@taglib prefix="my" uri="http://my.example.com/functions" %>
...
${my:contains(fn:split('foo,bar,john,doe', ','), myvar)}
(fn:split() 只是将分隔的String 转换为String[] 的技巧)
您甚至可以通过直接传递分隔字符串并在函数中执行拆分来进一步简化/专门化它,以便您最终可以像:
${my:contains('foo,bar,john,doe', myvar)}