Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[jsp] taglib help !

2 réponses
Avatar
Yayel
Bonsoir, bonne fête à tous !

J'espère qu'il reste encore un ou deux developpeurs jsp qui ne soient pas en
vacances et qui n'ont pas trop fait la fête ;-))

J'appelle à l'aide car je n'arrive pas à m'en sortir avec les taglib. J'ai
bien compris le principe mais je n'arrive pas les mettre en oeuvre avec
Tomcat (j'ai réussi avec Blazix comme expliqué dans le tutorial
http://www.jsptut.com/Taglibs.jsp).

Est-ce que quelqu'un aurait un exemple *simple* d'un war avec des taglib qui
fonctionne sous Tomcat 4 ? Ou sinon, voilà ce que je fais, quelqu'un
peut-il me dire ou je me plante ?

Bon, voilà ma classe de description du taglib.
C'est un fichier SimpleTag.java que j'ai placé dans le répertoire
/montaglib/WEB-INF/classes. Il se compile bien (avec -classpath
servlet.jar) et j'obtiens un fichier SimpleTag.class (dans le même
répertoire !)


import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class SimpleTag extends TagSupport{

public int doStartTag() throws JspException{

try{
pageContext.getOut().println("Bienvenue !");

}
catch(Exception e){
throw new JspTagException(e.getMessage());
}
return SKIP_BODY;
}
}


Voici mon Tag Lib Descriptor (fichier taglib.tld dans le répertoire
/montaglib/WEB-INF)

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>MaPremiereBalise</short-name>
<uri>taglib-uri</uri>

<tag>
<name>SimpleTag</name>
<tag-class>SimpleTag</tag-class>
</tag>
</taglib>

Voici maintenant mon web.xml (lui aussi dans le répertoire
/montaglib/WEB-INF)

<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>
taglib-uri
</taglib-uri>
<taglib-location>
/WEB-INF/taglib.tld
</taglib-location>
</taglib>
</web-app>

Enfin voici la page qui appelle le tag (à la racine de l'appli :
/montaglib/essai.jsp)

<html>
<body>

<%@ taglib uri="taglib-uri" prefix="MesBalises"%>
<MesBalises:SimpleTag></MesBalises:SimpleTag>
Rien d'autre ?

</body>
</html>

Voilà, quand je visualise la page essai.jsp, j'ai des erreurs :
org.apache.jasper.JasperException: /essai.jsp(6,0) No such tag SimpleTag in
the tag library imported with prefix MesBalises


Voilà, merci beaucoup à ceux qui auront pris le temps de lire jusqu'au bout
et un ennorme merci à ceux qui pourront me dépanner !

a+

2 réponses

Avatar
M6C
Salut,

Je ne sais pas si ça peut t'aider mais as tu essayé de faire les modifs
suivantes:

Car chez moi je ne défini rien dans le fichier: web.xml

@+


"Yayel" a écrit dans le message
news: 3fec9bc1$0$22333$
Bonsoir, bonne fête à tous !

J'espère qu'il reste encore un ou deux developpeurs jsp qui ne soient pas
en

vacances et qui n'ont pas trop fait la fête ;-))

J'appelle à l'aide car je n'arrive pas à m'en sortir avec les taglib. J'ai
bien compris le principe mais je n'arrive pas les mettre en oeuvre avec
Tomcat (j'ai réussi avec Blazix comme expliqué dans le tutorial
http://www.jsptut.com/Taglibs.jsp).

Est-ce que quelqu'un aurait un exemple *simple* d'un war avec des taglib
qui

fonctionne sous Tomcat 4 ? Ou sinon, voilà ce que je fais, quelqu'un
peut-il me dire ou je me plante ?

Bon, voilà ma classe de description du taglib.
C'est un fichier SimpleTag.java que j'ai placé dans le répertoire
/montaglib/WEB-INF/classes. Il se compile bien (avec -classpath
servlet.jar) et j'obtiens un fichier SimpleTag.class (dans le même
répertoire !)


import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class SimpleTag extends TagSupport{

public int doStartTag() throws JspException{

try{
pageContext.getOut().println("Bienvenue !");

}
catch(Exception e){
throw new JspTagException(e.getMessage());
}
return SKIP_BODY;
}
}


Voici mon Tag Lib Descriptor (fichier taglib.tld dans le répertoire
/montaglib/WEB-INF)

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>MaPremiereBalise</short-name>
<uri>taglib-uri</uri>

<tag>
<name>SimpleTag</name>
<tag-class>SimpleTag</tag-class>
</tag>
</taglib>

Voici maintenant mon web.xml (lui aussi dans le répertoire
/montaglib/WEB-INF)

<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
******************** Supprime cette partie - DEBUT

<taglib>
<taglib-uri>
taglib-uri
</taglib-uri>
<taglib-location>
/WEB-INF/taglib.tld
</taglib-location>
</taglib>
******************** Supprime cette partie - FIN

</web-app>

Enfin voici la page qui appelle le tag (à la racine de l'appli :
/montaglib/essai.jsp)

<html>
<body>

**************** Remplace la ligne suivant:

<%@ taglib uri="taglib-uri" prefix="MesBalises"%>
***** par :

<%@ taglib uri="/WEB-INF/taglib.tld" prefix="MesBalises"%>


<MesBalises:SimpleTag></MesBalises:SimpleTag>
Rien d'autre ?

</body>
</html>

Voilà, quand je visualise la page essai.jsp, j'ai des erreurs :
org.apache.jasper.JasperException: /essai.jsp(6,0) No such tag SimpleTag
in

the tag library imported with prefix MesBalises


Voilà, merci beaucoup à ceux qui auront pris le temps de lire jusqu'au
bout

et un ennorme merci à ceux qui pourront me dépanner !

a+


Avatar
Lionel
Yayel wrote:
<name>SimpleTag</name>
<tag-class>SimpleTag</tag-class>


tu as essayé de mettre ta classe dans un package (genre "taglib") ?
ca serait plus propre..

Sinon, tu écris:

Voici mon Tag Lib Descriptor (fichier taglib.tld dans le répertoire
/montaglib/WEB-INF)


puis:

<taglib-location>
WEB-INF/taglib.tld
</taglib-location>


la il y a une incohérence, non ?
mais je suppose que tu t'es trompé en tapant le message

à mon avis l'erreur vient de ton taglib.tld:

<taglib>
<tag>
<name>SimpleTag</name>
<tag-class>SimpleTag</tag-class>
</tag>
</taglib>

c'est tagclass il me semble au lieu de tag-class...
tu as vérifié la validité de ton tld ?