在标记库描述符中使用varargs

Abd*_*aly 10 java jsp el taglib variadic-functions

是否可以将TLD映射到以下函数:

public static <T> T[] toArray(T... stuff) {
    return stuff;
}
Run Code Online (Sandbox Code Playgroud)

所以我可以这样做:

<c:forEach items="${my:toArray('a', 'b', 'c')}"...
Run Code Online (Sandbox Code Playgroud)

我试过以下<function-signature>

java.lang.Object toArray( java.lang.Object... )
java.lang.Object[] toArray( java.lang.Object[] )
Run Code Online (Sandbox Code Playgroud)

而其他人似乎没什么用.

Bal*_*usC 9

不幸的是,这是不可能的.EL解析器立即将函数中的逗号解释为单独的参数,而不检查是否有任何方法采用varargs.您最好的选择是使用JSTL fn:split().

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...    
<c:forEach items="${fn:split('a,b,c', ',')}" var="item">
    ${item}<br/>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

然而,它本来是EL的一个很好的功能,虽然实现它会非常复杂.