编程语言
首页 > 编程语言> > java – 在标记库描述符中使用varargs

java – 在标记库描述符中使用varargs

作者:互联网

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

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

所以我可以这样做:

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

我尝试了以下< function-signature> s

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

而其他人似乎没什么用.

解决方法:

不幸的是,这是不可能的. 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中可能是一个不错的feature,虽然实现它会非常复杂.

标签:taglib,java,jsp,el,variadic-functions
来源: https://codeday.me/bug/20191008/1870091.html