Custom Tags JSP 2.0

Il est de notoriété qu'il est extrêmement déconseillé de mélanger le codage en Java avec le codage en HTML.  Pourtant, pour développer des tags avec l'API JSP traditionnelle (avant 2.0), le développeur doit coder en Java pour générer du code HTML (dans les méthodes doStartTag ou doEndTag par exemple). D'autre part, le cycle de vie des classes de tag est complexe et nécessite une bonne expérience Java.

Dans ce contexte, il est normal que la tendance ait été d'utiliser un langage de templating externe (par exemple Velocity ou Freemarker), appelé à partir du code java de la taglib pour gérer la génération du code HTML. Du coup, le développement d'un tag nécessitait un peu de code java et du code de template HTML.

Heureusement, gràce à la technologie JSP 2.0 et aux tagfiles, il est possible de revenir à un mode de développement de tags beaucoup plus sain. Deux nouvelles manières de développer des tags JSP sont apparues avec JSP 2.0. La documentation n'étant pas très fournie à ce sujet, voici quelques informations succinctes :

Le Tag File  :

  • Il permet de fabriquer un tag JSP personnalisé sans écrire de classe Java
  • Il est possible de réécrire toute sorte de Tag, même les BodyTag qui nécessitent l'évaluation du corps du tag.
  • Il ne nécessite pas de fichier .tld mais peut être trouvé grâce à l'attribut tagdir de la balise <%@taglib>
  • Il peut aussi être intégré à une TLD (balise <tag-file>).
  • Il peut être stocké :
    • dans le dossier /WEB-INF/tags/ (ou un sous-dossier) de l'application Web (certains problèmes ont été rencontré sur ce type de stockage avec WebSphere)
    • dans un fichier JAR (situé dans WEB-INF/lib de l'application), sous le dossier META-INF/tags
  • Le nom du fichier correspond au nom de la balise suivi de .tag ou .tagx
  • Le développement est bien plus simple que les anciens tags JSP sans pour autant limiter les fonctionnalités.

Le SimpleTag :

  • Il est implémenté en Java sans hériter de l'ancien Tag mais directement de JspTag.
  • Son cycle de vie est très simplifié :
    • La méthode setJspBody(JspFragment jspBody) permet de récupérer le corps du tag
    • Toute la génération du code HTML se fait maintenant dans la méthode doTag() qui n'est appelée qu'une seule fois lors de l'interprétation.
  • Une classe SimpleTagSupport existe et convient à la plupart des tags.

Un petit tutorial pour se lancer : http://www.oracle.com/technology/sample_code/tutorials/jsp20/tagfiles.html

N'hésitez pas à compléter ou à faire des retours sur votre expérience avec les JSP 2.0, c'est fait pour ça...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.