corps Photos La balise personnalisée la plus élémentaire, appelé d'un simple tag , n'a pas de corps et ne nécessite pas d'attributs. Une étiquette personnalisée contenant un corps est appelé une étiquette de corps. Les balises personnalisées peuvent être imbriquées. Les valeurs d'attributs peuvent être définis en utilisant des expressions JSP. Il ya deux composants de base que vous construisez pour créer une étiquette personnalisée: le fichier descripteur de bibliothèque de balises et la balise gestionnaire classe Java. Ces composants sont enregistrés avec le conteneur de servlet dans le fichier web.xml de votre application.
Créer le Tag Library Descriptor fichier
le descripteur de fichier de bibliothèque de balises ( TLD ) est un fichier XML contenant des métadonnées définissant les balises personnalisées. Par exemple , le fichier TLD suivant définit une balise simple appelé " myTag " avec un attribut " maxValue , " et pas de corps. L'attribut maxValue est nécessaire, et la valeur peut être définie par une expression runtime (défini par l' élément de rtexprvalue ), qui doit retourner un entier .
Xml version = "1.0" encoding = " ISO- 8859-1 "> < DOCTYPE taglib PUBLIC ! " - //Sun Microsystems, Inc. //DTD JSP taglibrary 1.2 //EN " tag tag avec un
Créer le Tag Handler
Chaque balise personnalisée dispose d'un gestionnaire de balises qui définit et obtient ses attributs , les processus du corps, et met en œuvre l'action. Un gestionnaire de balises est une classe Java qui implémente javax.servlet.jsp.tagext.Tag ou, mieux encore , s'étend une sous-classe de Tag . Les classes de gestionnaire de balises ont accès aux mêmes objets implicites que les pages JSP , tels que la demande , la réponse et la séance.
Créer un simple classe gestionnaire de tag en étendant javax.servlet.jsp.tagext.TagSupport . Mettre en œuvre le doStartTag , doEndTag et méthodes de libération. Le doStartTag est exécutée lorsque la balise de début est rencontrée, et exécute l'action principale de l'étiquette, par exemple effectuer des calculs et d'imprimer les résultats .
Public int doStartTag ( ) throws JspException { try { ... votre code ... } catch (Exception ex) { ... la gestion des erreurs ... } return SKIP_BODY ; }
La méthode de doEndTag est exécutée lorsque la balise de fin est rencontrée. Retour EVAL_PAGE si le reste de la page JSP doit être évalué . La méthode de libération doit nettoyer et libérer toutes les ressources utilisées par la classe gestionnaire de tag .
Si votre balise personnalisée avec des attributs, inclure une variable membre et mettre en œuvre ensemble et obtenir des méthodes pour chaque attribut. Si l'attribut n'est pas nécessaire, définir une valeur par défaut. Pour l'attribut maxValue requis :
private int maxValue ;
publique vide setMaxValue (int val) { maxValue = val ;} public int getMaxValue () {return maxValue ;}
gestionnaires de balises du corps qui n'interagissent pas avec le corps contenu extend javax.servlet.jsp.tagext.TagSupport de la balise . Mettre en œuvre les mêmes méthodes que pour un simple tag . Également implémenter la méthode doAfterBody pour analyser et utiliser le contenu du corps . Pour les gestionnaires de balises du corps qui ont besoin d' interagir avec le contenu du corps de la balise , étendre javax.servlet.jsp.tagext.BodyTagSupport et à la fois le doInitBody et méthodes doAfterBody .
Jour web.xml
< br >
Une fois que vous avez créé le fichier TLD et classe gestionnaire de tag , éditez le fichier web.xml pour enregistrer votre nouvelle bibliothèque de balises avec le conteneur de servlets . Ajouter une section taglib à la fin avant la balise de fin
utiliser votre coutume Balises
Dans le fichier JSP qui va utiliser vos étiquettes personnalisées, utilisez la directive taglib pour indiquer la bibliothèque de balises que vous allez utiliser et le préfixe vous utiliserez référer à votre bibliothèque. Vous pouvez vous référer à votre uri de la bibliothèque en utilisant le chemin :
<% @ taglib uri = "/WEB-INF/exampletaglib.tld " prefix = % «par exemple» > Photos
ou le nom que vous avez fourni dans le fichier web.xml comme la taglib - uri:
<% @ taglib uri = préfixe " mytags " = " exemple:"% > Photos
Utilisez votre étiquette personnalisée dans votre JSP où vous voulez que l'action se produise, en utilisant le préfixe que vous avez fourni à la directive taglib :