Bonjour,
J'ai créé un custom tag, avec la classe et la méthode doTag() qui va avec. Est-il possible, dans ce doTag(), de faire appel à un tag de la taglib c ? Par exemple pour faire un c:import ?
Merci d'avance.








Bonjour,
J'ai créé un custom tag, avec la classe et la méthode doTag() qui va avec. Est-il possible, dans ce doTag(), de faire appel à un tag de la taglib c ? Par exemple pour faire un c:import ?
Merci d'avance.
Si tu veux dans ton tag utiliser ce qui est fait dans le taglib c:import, tu dois soit copier/coller le code à partir de la class Java liée au tag c:import, soit faire en sorte que ton tag extends le tag de la class Java liée au tag c:import... (org.apache.taglibs.standard.tag.rt.core.ImportTag)
Tu peux aussi récupérer le code html généré par la balise c:import et l'implémenter dans ton Tag...








Merci pour vos réponses, qui amènent d'autres questions:
Comment hériter de la classe implémentant le tag import peut résoudre mon problème ?
Concernant le code de ce tag import, où peut-on en trouver la source ?
Va faire un tour sur cette page (http://adiguba.developpez.com/tutoriels/j2ee/jsp/jstl/) je pense qu'il y a tout ce qu'il te faut comme infos sur la JSTL








J'avais déjà été voir. Je n'ai peut-être pas regardé là où il faut, mais je n'ai trouvé aucune information susceptible de m'aider à faire ce que je veux.
Qu'est-ce que tu veux faire précisemment ?
Tu veux récupérer le code java de la tag import pour l'utiliser dans ton tag ou tu veux utiliser les balises du genre <c:import... dans le JspWriter de ton tag ?








Je veux, d'une façon ou d'une autre, dans la méthode doTag de mon customtag, faire ce que fait le tag c:import. Que ce soit en exécutant le même code que le tag c:import (mais où trouver la source ?), ou en faisant appel à lui à partir de mon customtag.
J'ai peut être trouvé un début de piste : dans ton tag, essaye de faire un truc du genre
En espérant que ca t'aide un peu...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ImportTag it = new ImportTag(); it.setUrl("/WEB-INF/taPage.jsp"); jw.print(it);![]()








Ca ne fait qu'afficher la référence de l'objet it.
Créer un objet ImportTag et initialiser l'attribut url, ça ne pause aucun soucis. Je ne sais pas si cet objet est utilisable par la suite, par contre. J'ai bien essayé d'exécuter certaines méthodes de l'objet, mais aucun résultat.








J'ai trouvé une solution. Seulement, pour la trouver, j'ai du refaire mon tag en le faisant hériter de TagSupport, et plus SimpleTagSupport (repasser donc aux tag 1.2).
Après, pour appeler le tag c:import, je fais:
Je suppose que ça marcherait avec n'importe quel autre tag, en ajoutant au besoin l'appel aux méthodes pour prendre en charge le bodyContent des tags.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ImportTag it = new ImportTag(); it.setPageContext(pageContext); it.setUrl("nsFooter.jsp"); it.doStartTag(); it.doEndTag(); it.release();
Par contre, ce serait encore mieux si je pouvais faire la même chose en tag 2.0, mais bon, en attendant ça fera l'affaire.
Bonjour.
J'ai pas exactement le code qui fait ce que tu veux (je l'ai à la maison et je uis au boulot), mais je me rappelle comment je l'ai déja fait.
La méthode qui fera ton bonheur est :
dans la classe PageContext.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public abstract void include(java.lang.String relativeUrlPath) throws ServletException, java.io.IOException
Tu peux récuperer une instance qui implémente cette méthode en faisant appel àTu peux donc revenir à JSP 2.0 au lieu de 1.2 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part PageContext pc = (PageContext)SimpleTagSupport.getJspContext()








Ah oué, si on peut caster le jspContext en pageContext ça aide beaucoup![]()
Merci Modjo, tout marche impecc', et plus facilement qu'avec ma solution ^^
Partager