lichaam < /prefix : tagName >
De meest fundamentele aangepaste code , een zogenaamde eenvoudige tag , heeft geen lichaam en geen attributen nodig . Een aangepaste tag met daarin een lichaam heet een body-tag . Aangepaste labels kunnen worden genest . Attribuutwaarden kan worden ingesteld met behulp van JSP uitdrukkingen . Er zijn twee fundamentele onderdelen die u bouwen aan een aangepast label te maken : de Tag Library Descriptor file en de tag handler Java-klasse . Deze componenten zijn geregistreerd bij de servlet container in web.xml bestand van uw toepassing .
Maak de Tag Library Descriptor File
The Library Descriptor ( TLD ) bestand Tag is een XML-bestand met metagegevens definiëren van uw eigen labels . Bijvoorbeeld , de volgende TLD -bestand definieert een eenvoudige tag genaamd " myTag " met een attribuut , " maxvalue , " en geen lichaam . Het attribuut maxvalue is vereist , en de waarde kan worden ingesteld met behulp van een runtime- expressie ( door de rtexprvalue element set ) , die een geheel getal moet terugkeren .
<
? Xml version = " 1.0 " encoding = " ISO - 8859-1 " > < DOCTYPE taglib PUBLIC ? ! " - //Sun Microsystems , Inc //DTD JSP TagLibrary 1.2 //EN " label tag met een
Maak de Tag Handler
Elke aangepaste tag heeft een tag handler die zet en krijgt zijn attributen , processen in het lichaam , en implementeert de actie . Een tag handler is een Java- klasse die javax.servlet.jsp.tagext.Tag implementeert of , beter nog , breidt een subklasse van Tag . Tag handler klassen hebben toegang tot dezelfde impliciete objecten als JSP pagina's , zoals het verzoek , respons , en sessie .
Maak een eenvoudige tag handler klasse door de uitbreiding javax.servlet.jsp.tagext.TagSupport . Implementeren van de doStartTag , doEndTag , en vrijlating methoden . De doStartTag wordt uitgevoerd wanneer de start -tag wordt aangetroffen , en voert het hoofdgeding van de tag, zoals het uitvoeren van berekeningen en het afdrukken van de resultaten .
Public int doStartTag ( ) op Twitter gooit JspException { try { ... uw code ... } catch ( Exception ex ) { ... foutafhandeling ... } return SKIP_BODY ; }
De doEndTag methode wordt uitgevoerd wanneer de eind-tag wordt aangetroffen . Terug EVAL_PAGE als de rest van de JSP-pagina moet worden geëvalueerd . De release methode moet opruimen en laat de resterende middelen worden gebruikt door de tag handler klasse .
Als uw aangepaste tag heeft attributen , onder andere een lidvariabele en implementeren set en krijg methoden voor elk kenmerk . Als het kenmerk niet nodig is, stelt u een standaard waarde . Voor de benodigde maxvalue attribuut :
private int maxvalue
;
public void setMaxValue
( int val) { maxvalue = val ; } public int getMaxValue ( ) { return maxvalue ; }
body tag handlers die niet interageren met de tag 's lichaam inhoud extend javax.servlet.jsp.tagext.TagSupport . Implementeren dezelfde methoden als voor een eenvoudige label . Ook de uitvoering van de doAfterBody methode te ontleden en gebruiken het lichaam inhoud . Voor body -tag handlers die moeten interageren met het lichaam van de inhoud van de tag , breiden javax.servlet.jsp.tagext.BodyTagSupport en zowel de doInitBody en doAfterBody methoden .
Update Web.xml
< br >
Zodra u het TLD -bestand en tag handler klasse hebt gemaakt , bewerkt u het bestand web.xml om uw nieuwe tag bibliotheek met de servlet container te registreren. Voeg een taglib sectie op het einde voor het eind -tag
Gebruik uw Custom Tags
In het JSP -bestand dat uw aangepaste labels zal gebruiken , gebruikt u de taglib richtlijn op de tag library die u gaat gebruiken en het voorvoegsel je zult gebruiken aangeven te verwijzen naar uw bibliotheek . U kunt verwijzen naar uw bibliotheek uri behulp van het pad :
< % @ taglib uri = " /WEB-INF/exampletaglib.tld " prefix = " bijvoorbeeld " % >
of de naam die u hebt opgegeven in web.xml als de taglib - uri :
< % @ taglib uri = voorvoegsel " mytags " = " bijvoorbeeld " % >
Gebruik je aangepaste code in uw JSP waar u de actie te gebeuren , met behulp van het voorvoegsel kunt u de taglib richtlijn verstrekt :