corpo < /prefisso : tagName >
La tag personalizzato di base , chiamato un tag semplice , non ha corpo e non richiede attributi. Un tag personalizzato contenente un corpo è chiamato un tag body . Tag personalizzati possono essere nidificate . I valori degli attributi possono essere impostati utilizzando espressioni JSP . Ci sono due componenti di base si costruisce per creare un tag personalizzato : il file descrittore di libreria e il tag handler classe Java . Questi componenti sono registrati con il servlet container nel file web.xml dell'applicazione.
Crea il Tag Library Descriptor File
Il file Tag Library Descriptor ( TLD ) è un file XML contenente i metadati che definisce i tag personalizzati . Ad esempio, il seguente file TLD definisce un semplice tag chiamato " myTag " con un attributo , " maxValue , " e nessun corpo . È richiesto l'attributo maxValue , e il valore può essere impostato utilizzando un'espressione runtime (impostato dall'elemento rtexprvalue ) , che deve restituire un numero intero .
< ? Xml version = encoding " 1.0 " = " ISO - 8859-1 "> < DOCTYPE taglib PUBBLICO ? ! " - //Sun Microsystems , Inc. //DTD JSP TagLibrary 1.2 //EN " tag tag con un
Creare il Tag Handler
Ogni tag personalizzato ha un tag handler che imposta e ottiene i suoi attributi, i processi del corpo , e realizza l'azione . Un gestore di tag è una classe Java che implementa javax.servlet.jsp.tagext.Tag o , meglio ancora , si estende una sottoclasse di tag. Classi di tag handler hanno accesso agli stessi oggetti impliciti come pagine JSP , come richiesta , la risposta, e di sessione .
Creare una semplice classe tag handler , estendendo javax.servlet.jsp.tagext.TagSupport . Implementare il doStartTag , doEndTag , e metodi di rilascio . Il doStartTag viene eseguito quando viene incontrato il tag iniziale , ed esegue l'azione principale del tag , come l'esecuzione di calcoli e la stampa dei risultati .
Public int doStartTag () genera JspException { try { ... il tuo codice ... } catch ( Exception ex ) { ... gestione degli errori ... } return SKIP_BODY ; }
Il metodo doEndTag viene eseguito quando viene incontrato il tag di chiusura . EVAL_PAGE restituire se il resto della pagina JSP è da valutare. Il metodo di rilascio dovrebbe ripulire e liberare tutte le risorse utilizzate dalla classe di gestione dei tag .
Se il tag personalizzato ha attributi , includere una variabile membro e implementare metodi set e get per ogni attributo . Se non è richiesta l'attributo , impostare un valore predefinito . Per l'attributo maxValue richiesto :
private int maxValue ;
public void setMaxValue ( int val) { maxValue = val ; } public int getMaxValue ( ) {return maxValue ; }
< p > gestori tag body che non interagiscono con il tag body contenuto extend javax.servlet.jsp.tagext.TagSupport . Implementare gli stessi metodi per un tag semplice . Anche implementare il metodo doAfterBody per analizzare e utilizzare i contenuti del corpo . Per i gestori di tag del corpo che hanno bisogno di interagire con il contenuto del corpo del tag , estendere javax.servlet.jsp.tagext.BodyTagSupport e sia il doInitBody e metodi doAfterBody .
Aggiornamento web.xml
< br >
Una volta creato il file TLD e tag di classe del gestore , modificare il file web.xml per registrare la nuova libreria di tag con un servlet container . Aggiungere una sezione taglib alla fine prima del tag di chiusura
Utilizzare i tuoi Tag personalizzati
Nel file JSP che utilizzerà i tuoi tag personalizzati , utilizzare la direttiva taglib per indicare la libreria di tag che verrà utilizzato e il prefisso che verrà utilizzato per riferirsi alla propria libreria. È possibile consultare la uri libreria utilizzando il percorso :
< % @ taglib uri = " /WEB-INF/exampletaglib.tld " prefix = " esempio " % >
o il nome che hai fornito in web.xml come taglib -uri :
< % @ taglib uri = prefisso " mytags " = " esempio " % >
Usa il tag personalizzato nella vostra JSP in cui si desidera che l' azione avvenga, utilizzando il prefisso che hai fornito alla direttiva taglib :