2016-07-22 24 views
0

我正在寻找一种EL自定义功能的解决方案。EL自定义函数,如何在<function-signature>中声明HashSet <Integer>?

下面,.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; 

} 

当我尝试编译它,出现错误:

标记“</Integer>”缺失。

所以我尝试使用>和<,而不是 “<” 和 “>”。但这并不奏效。

也许有人知道解决方案来解决它。

提前,谢谢!

+0

不知道你指定的UTF-8字符集的TLD定义 –

回答

0

taglib中的函数签名首先不支持泛型。你可以放心地排除它。

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

下面是正确的声明:

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

好吧,我试试,但不会太工作:/ – JSFnta

+0

这对我的作品。请说出您的设置和环境与裸默认值和当前可用版本的不同之处。 – BalusC

+0

'[EBC] - 2016-07-22 14:33:44,128错误ActionBeanSupport:108 - org.apache.jasper.JasperException:在TLD的函数fnc中为方法签名中指定的类java.util.HashSet partenairesExclus isIn无法找到。“我猜我的环境是默认的环境。 – JSFnta

相关问题