Körper
Die grundlegendste benutzerdefinierten Tags , rief eine einfache tag , hat keinen Körper und erfordert keine Attribute . Ein benutzerdefiniertes Tag mit einem Körper wird als ein Body-Tag . Benutzerdefinierte Tags können verschachtelt werden. Attribut Werte können mit JSP Ausdrücke werden. Es gibt zwei grundlegende Komponenten, die Sie bauen, um ein benutzerdefiniertes Tag schaffen: der Tag Library Descriptor Datei und die Tag-Handler Java -Klasse. Diese Komponenten werden mit dem Servlet-Container in Ihrer Anwendung Datei web.xml registriert .
Erstellen Sie den Tag Library Descriptor File
Die Tag Library Descriptor (TLD) -Datei ist eine XML-Datei mit Metadaten Definition Ihrer benutzerdefinierten Tags . Beispielsweise definiert die folgende TLD-Datei einen einfachen Tag mit dem Namen " MyTag " mit einem Attribut " maxValue ", und kein Körper . Die maxValue Attribut ist erforderlich , und der Wert kann über eine Laufzeit- Ausdruck (vom rtexprvalue Element ), die eine ganze Zahl zurückgeben müssen.
< ? Xml version = "1.0" encoding = "ISO - 8859-1 "> < DOCTYPE taglib PUBLIC ! " - //Sun Microsystems , Inc. //DTD JSP taglibrary 1.2 //EN " tag tag mit einem
Erstellen Sie den Tag Handler
Jeder benutzerdefinierte Tag hat einen Tag -Handler, und setzt bekommt seine Attribute , Prozesse des Körpers, und setzt die Aktion. Ein Tag-Handler ist eine Java- Klasse, die javax.servlet.jsp.tagext.Tag implementiert oder noch besser, sich eine Unterklasse von Tag . Tag -Handler -Klassen haben Zugriff auf die gleichen impliziten Objekte als JSP-Seiten , wie Request, Response und Session .
Erstellen Sie eine einfache Tag-Handler -Klasse durch die Ausweitung javax.servlet.jsp.tagext.TagSupport . Implementieren Sie die doStartTag , doEndTag und Release- Methoden . Die doStartTag ausgeführt wird, wenn die Start-Tag angetroffen wird, und führt die Klage von dem Tag , wirft solche Berechnungen und Ausdrucken der Ergebnisse .
Public int doStartTag () { try { JspException ... Ihr Code ...} catch (Exception ex) { ... Fehlerbehandlung ... } return SKIP_BODY ;}
doEndTag Methode wird ausgeführt , wenn das Ende tag angetroffen wird. Zurück EVAL_PAGE wenn der Rest der JSP-Seite ausgewertet werden soll . Die Release -Methode sollte aufräumen und lassen alle Ressourcen von der Tag-Handler -Klasse verwendet.
Wenn Ihr benutzerdefiniertes Tag Attribute hat , gehören eine Membervariable und umzusetzen set-und get -Methoden für jedes Attribut . Wenn das Attribut nicht erforderlich ist, einen Standardwert . Für die erforderliche maxValue Attribut :
private int maxValue ;
public void setMaxValue (int val ) { val = maxValue ; } public int getMaxValue () {return maxValue ;}
< p > Body Tag-Handler , die nicht mit dem Tag der Körper Inhalte extend javax.servlet.jsp.tagext.TagSupport interagieren . Implementieren Sie die gleichen Methoden wie für einen einfachen Tag . Auch die Umsetzung doAfterBody Verfahren zu analysieren und mit dem Körper Inhalte . Für Body-Tag ab, die mit dem Tag der Körper Inhalten interagieren müssen , verlängern javax.servlet.jsp.tagext.BodyTagSupport und sowohl die doInitBody und doAfterBody Methoden .
Aktualisieren web.xml
< br >
Sobald Sie die TLD -Datei und Tag-Handler -Klasse erstellt haben , bearbeiten Sie die Datei web.xml auf Ihren neuen Tag-Bibliothek mit dem Servlet-Container registrieren . Fügen Sie einen taglib Abschnitt am Ende vor dem Ende tag
Verwenden Sie Ihre Custom Schlagwörter
In der JSP-Datei , die Ihre benutzerdefinierten Tags verwenden , verwenden Sie die taglib Richtlinie , um die Tag-Bibliothek Sie verwenden werden und das Präfix Sie verwenden zeigen zu Ihrer Bibliothek verweisen. Sie können entweder an Ihre Bibliothek uri über den Pfad verweisen :
<% @ taglib uri = "/WEB-INF/exampletaglib.tld " prefix = " z. B. "%>
oder der Name, den Sie in web.xml vorgesehen, wie die taglib -uri :
<% @ taglib uri = " mytags " prefix = " z. B. "%>
Verwenden Sie Ihre benutzerdefinierten Tags in Ihrem JSP , wo Sie wollen die Aktion geschehen , mit dem Präfix der Richtlinie vorgesehenen taglib :