Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的Taglib:带数组参数的标记_Java_Jsp_Jsp Tags_Taglib - Fatal编程技术网

Java中的Taglib:带数组参数的标记

Java中的Taglib:带数组参数的标记,java,jsp,jsp-tags,taglib,Java,Jsp,Jsp Tags,Taglib,如何定义接收数组作为参数的标记 谢谢如果数组数据是字符串,您可以将值作为分隔列表传递,可能是在属性中传递 <mytag myattribute="value1,value2,value3"/> 您可以对标记体或jsp:param或类似的东西执行相同的操作,但我怀疑属性方法可能最容易编码和理解。JSTL做到了这一点,您也可以做到 我手头正好有一个el函数示例,然后我将粘贴c:forEach定义的一部分,让您了解: 可以将其作为分隔字符串传递,但如果需要集合或数组,则可以使用以下内

如何定义接收数组作为参数的标记


谢谢

如果数组数据是字符串,您可以将值作为分隔列表传递,可能是在属性中传递

<mytag myattribute="value1,value2,value3"/>


您可以对标记体或
jsp:param
或类似的东西执行相同的操作,但我怀疑属性方法可能最容易编码和理解。

JSTL做到了这一点,您也可以做到

我手头正好有一个el函数示例,然后我将粘贴c:forEach定义的一部分,让您了解:

可以将其作为分隔字符串传递,但如果需要集合或数组,则可以使用以下内容:

<function>
  <name>join</name>
  <function-class>mypackage.Functions</function-class>
  <function-signature>String join(java.lang.Object, java.lang.String)</function-signature>
</function>

想不出别的办法了。标签应该在JSP页面中以声明的方式使用,所以您只有真正的XML,即字符串、标签、属性,除非您要使用Scriptlet,这不是很好的实践。你能详细说明一下你到底想做什么吗?这个解决方案可能行得通,但我已经使用了params并将这个params添加到父标记中。
/**
 * jstl's fn:join only works with String[].  This one is more general.
 * 
 * usage: ${nc:join(values, ", ")}
 */
public static String join(Object values, String seperator)
{
    if (values == null)
        return null;
    if (values instanceof Collection<?>)
        return StringUtils.join((Collection<?>) values, seperator);
    else if (values instanceof Object[])
        return StringUtils.join((Object[]) values, seperator);
    else
        return values.toString();
}
<tag>
    <description>
        The basic iteration tag, accepting many different
        collection types and supporting subsetting and other
        functionality
    </description>
    <name>forEach</name>
    <tag-class>org.apache.taglibs.standard.tag.rt.core.ForEachTag</tag-class>
    <tei-class>org.apache.taglibs.standard.tei.ForEachTEI</tei-class>
    <body-content>JSP</body-content>
    <attribute>
        <description>
            Collection of items to iterate over.
        </description>
        <name>items</name>
        <required>false</required>
        <rtexprvalue>true</rtexprvalue>
        <type>java.lang.Object</type>
    </attribute>
    ...