Java 表达式语言:如何简化此语句(需要“in-like”子句)
如果我能代替你,那就太好了Java 表达式语言:如何简化此语句(需要“in-like”子句),java,jsp,jsf,el,in-clause,Java,Jsp,Jsf,El,In Clause,如果我能代替你,那就太好了 ${myvar-eq'foo'或myvar-eq'bar'或myvar-eq'john'或myvar-eq'doe'或myvar-eq…} 由任何一方 ${myvar在['foo','bar','john','doe',…]中 或 ${myvar in{'foo','bar','john','doe',…} 但没有一个成功。任何替代解决方案?使用名称列表定义变量mylist,并使用包含的: mylist.contains(myvar) 首先为它创建一个EL函数
${myvar-eq'foo'或myvar-eq'bar'或myvar-eq'john'或myvar-eq'doe'或myvar-eq…}
由任何一方
${myvar在['foo','bar','john','doe',…]中
或
${myvar in{'foo','bar','john','doe',…}
但没有一个成功。任何替代解决方案?使用名称列表定义变量
mylist
,并使用包含的:
mylist.contains(myvar)
首先为它创建一个EL函数。Facelets的一个启动示例可以在中找到,JSP的另一个示例可以在页面底部附近找到
(或者,如果您使用的是JSF实用程序库,请使用its,尽管它仅适用于Facelets,而不适用于不推荐的JSP)
然后按如下方式使用:
...
${my:contains(fn:split('foo,bar,john,doe',',',,myvar)}
(fn:split()
您甚至可以通过直接传递带分隔符的字符串并在函数中执行拆分来进一步简化/专门化它,这样您就可以得到如下结果:
${my:contains('foo,bar,john,doe',myvar)}
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;
}