2016-07-22 71 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