小编典典

在标签库描述符中使用varargs

jsp

是否可以将TLD映射到以下功能:

public static <T> T[] toArray(T... stuff) {
    return stuff;
}

这样我就可以做到:

<c:forEach items="${my:toArray('a', 'b', 'c')}"...

我尝试以下<function-signature>小号

java.lang.Object toArray( java.lang.Object... )
java.lang.Object[] toArray( java.lang.Object[] )

和其他人,但似乎无济于事。


阅读 214

收藏
2020-06-08

共1个答案

小编典典

不幸的是这是不可能的。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>

尽管实现起来非常复杂,但它在EL 中将是一个不错的功能

2020-06-08