Hier, j'ai travaillé sur 4 fichiers tag de mon framework.
Un fichier tag permet de créer une nouvelle balise executant du code Java. Par exemple insérer dans un fichier JSP :
<robusta:auth controller=${usercontroller}/>
va lancer un code permettant de récupérer dans une variable authValue au choix le cookie authtoken ou le header Authorization et d'appliquer au Controller la fonction setAuthorizationValue(authValue).
Il existe deux grandes techniques pour écrire un fichier tag :
- créer une classe implémentant l'interface Tag
- créer un fichier mélant XML et code Java.
Par exemple :
<%@tag description="create the variable auth for the JSP" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ variable name-given="auth" scope="AT_END" %>
<%@attribute name="mypage" rtexprvalue="true" type="javax.servlet.jsp.PageContext" required="true"%>
<% /* Code JAVA */
String autho = "not found";
javax.servlet.http.HttpServletRequest myrequest =(HttpServletRequest) mypage.getRequest();
(...)
mypage.setAttribute("autho",authorizationValue, mypage.REQUEST_SCOPE);
%>
<c:set var="auth" value="${autho}"/>
La première solution :
- requiert un fichier .java, écrit 100% en Java objet
- necessite une configuration dans un fichier xml séparé (le .tld pourr les intimes)
- le fichier .java est rangé où on le souhaite
- le .tld est rangé dans /META-INF/ ou /WEB-INF/, et est analysé par Ant ou Maven lors du build
- Lorsque le serveur traduit la jsp, il associe facilement la classe Tag
la deuxième solution :
- requiert un fichier .tag mixant la configuration et du java
- le .tld est facultatif
- le .tag doit se trouver dans /WEB-INF/tags
- le serveur traduit le .tag en même temps que la jsp, le fichier .java correct.
J'ai une nette préférence pour la deuxième solution, car elle est plus souple à manipuler et j'ai choisit le JSP plutôt que le PHP, pour la facilité d'utilisation du XML.
Par contre, il me semble impossible de distribuer proprement ces fichiers .tag dans un beau fichier .jar. Cela oblige tout programmeur souhaitant utiliser mes .tag de les copier dans leur répertoire /WEB-INF/tags. Et lorsque je modifie un de mes .tag, je dois les copier dans tous les WEB-INF de mes différents Web Services.
Par comparaison, lorsque je modifie mes classes utilitaires de mon framework (une classe sur les List par exemple), tous mes web services sont mis à jour avec un clean & build.
Une belle bibliothèque .jar avec des classes implémentant Tag peut donc se recompiler proprement, et rend la distribution bien plus propre.
Objet :1 - XML : 0
Vous devez être identifié pour poster un commentaire.
Il s'agit d'un Blog sur les meilleures utilisations de REST dans un environnement JAVA. Le Blog contient également du contenu sur la technologie Ajax et également un journal de bord sur le développement du site pédagogique http://www.Edupassion.com
Nicolas Zozol - Edupassion.com
| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 |
Copyright © 2000-2012 - www.developpez.com