2011-11-27 2 views
4

Je veux exporter cette fonction à mon dossier custom-functions.tld:fonction Exportation de TLD

package com.site.vo; 

public class Utils { 
    public static String concat(String... values) { 
     String out = ""; 

     for (String value : values) { 
      out.concat(value); 
     } 

     return out; 
    } 
} 

Voici mon fichier custom-functions-tld:

<?xml version="1.0" encoding="UTF-8"?> 
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 
     version="2.0"> 
<tlib-version>2.0</tlib-version> 
<uri>/WEB-INF/custom-functions.tld</uri> 
<function> 
    <description>Concatenate strings</description> 
    <name>concat</name> 
    <function-class>com.site.vo.Utils</function-class> 
    <function-signature>java.lang.String concat(java.lang.String...)</function-signature> 
</function> 
</taglib> 

Ce function-signature n'a pas travaillé, je suis arrivé à l'exception de suivi:

org.apache.jasper.JasperException: The class java.lang.String... specified in the method signature in TLD for the function f:concat cannot be found. java.lang.String...

Essayé java.lang.String[], mais que l'on attend un seul paramètre (une liste, d'oh!). Je cherche la bonne fonction-signature pour exporter des fonctions avec plusieurs paramètres.

Merci d'avance!

Répondre

5

Vous devriez essayer de passer à Java EE 6. Vous pouvez alors utiliser le nouveau Unified Expression Language et vous sauver du cauchemar de créer votre propre taglib.

Il vous permet d'appeler directement des méthodes sur vos beans définis.