EL自定义函数,如何在<function-signature>中声明HashSet <integer>?

时间:2016-07-22 09:28:02

标签: jsp generics el taglib

我正在寻找一种在EL中使用自定义功能的解决方案。

下面是 .tld 文件:

<function>
    <description>
        Retourne vrai si l'élement est contenu dans la collection, faux sinon.
    </description>
    <name>isIn</name>
    <function-class>com.plebicom.librairies.ebuyclub.partenaire.Partenaire</function-class>
    <function-signature>
        boolean isIn(HashSet<Integer> partenairesExclus, int idPart)
    </function-signature>
</function> 

然后, .java 文件:

public static boolean isIn(HashSet<Integer> partenairesExclus, int idPart) {

    if(partenairesExclus.contains(idPart)) {

        return true;

    }

    return false;

}

当我尝试编译它时,会发生错误:

  

标签&#34;&lt; / Integer&gt;&#34;不见了。

所以我尝试使用&gt;和&lt;而不是&#34;&lt;&#34;和&#34;&gt;&#34;。但这并不奏效。

也许有人知道修复它的解决方案。

事先,谢谢!

1 个答案:

答案 0 :(得分:0)

taglib中的函数签名首先不支持泛型。你可以放心地把它拿出来。

我认为你可能错误地认为声明泛型类型的具体问题是正确的解决方案,就是无法找到该函数。但这实际上是因为您没有通过FQN(完全限定名称)声明类,因此包括包。换句话说,您必须将HashSet声明为java.util.HashSet并省略参数名称。

以下是适当的声明:

<function-signature>
    boolean isIn(java.util.HashSet, int)
</function-signature>