Inhalt | Abbildung | Source | SCWCD | |||
|< | < | > | >| | Generated by CoCoDiL |
For a custom tag library or a library of Tag Files, create the 'taglib' directive for a JSP page. |
TagLib Direktiven wurden im Kapitel über Direktiven ausführlich behandelt.
Hier die Syntax zur Deklaration einer TagLib Direktive
Attribut | Beschreibung |
prefix | Der Prefix mappt eine Aktion zu einer TagLib Library |
uri | Entweder ein eindeutiges Symbol das eine TLD spezifiziert oder ein relativer Pfad zu einer TLD Datei bzw Jar File |
tagdir | Kontextrelativer Pfad zu einem Ordner mit Tag-Dateien. Der Pfad startet mit /WEBINF/tags |
Beispiele:
Given a design goal, create the custom tag structure in a JSP page to support that goal. |
Für diese Objective kann man sich nur schwer vorbereiten. Hilfreich ist sicherlich das Studium der existierenden Library, wie die Core Standard Library.
So zeigt die Aktion <c:choose> <c:when> <c:otherwise> wie man durch Verschachtelungen von Tags komplexe Strukturen aufbauen kann.
Einem Tag kann man Attribute mitgeben, deren Werte je nach TLD Datei fest sind oder durch Auswertung eines Ausdrucks ausgewertet werden. (siehe z.B. die Aktion <c:if>).
Das Ergebnis der Auswertung des Body eines Tags wird zur Ausgabe verwendet. Je nachdem wie man den Tag Handler schliesslich programmiert, wird die Auswertung des Bodys unterdrückt, (siehe Aktion <c:if>) oder mehrfach ausgewertet (siehe Aktion <c:forEach>)).
Beachte dass Ergebnis der Auswertung des Bodys, für die nächste Iteration wieder verwendet werden kann. Mehr dazu im Kapitel über die Programmierung der Tag Libraries.
Given a design goal, use an appropriate JSP Standard Tag Library (JSTL v1.1) tag from the "core" tag library. |
Die Core Library teil sich in 3 Bereiche auf:
Allgemeine Aktionen
Core-Tags | Bedeutung |
<c:out> | Ausgabe von Daten in die Antwort |
<c:set> | Setzt Variable in einen Scope |
<c:remove> | löscht Daten aus einem Scope |
<c:catch> | Abfangen von Fehlern |
Bedingungen und Schleifen
Core-Tags | Bedeutung |
<c:if> | Bedingungen |
<c:choose> | Auswahl |
<c:when> | Alternativen in Auswahl |
<c:otherwise> | Letzte Alternative in einer Auswahl |
<c:forEach> | Iterationen über eine Sammlung von Elementen |
<c:forTokens> | Iterationen über Token, die durch Delimiter getrennt sind |
URL-bezogene Aktionen
Core-Tags | Bedeutung |
<c:import> | Inklusion von Texten |
<c:url> | Umschreiben von URLs |
<c:redirect> | Umleitung zu anderen Seiten |
<c:param> | Übergabe von Parametern |
Die Aktion <c:out>
Die <c:out> Aktion wertet einen Ausdruck aus und übergibt das Ergebnis an das aktuelle JspWriter-Objekt.
Da EL-Ausdrücke direkt innerhalb von Template-Daten eingefügt werden dürfen, wird diese Funktion selten verwendet, und ist vor allem mit den Attributen interessant.
Attribut | Java Typ | Dynamik | default-Wert | Beschreibung |
value | Object | Ja | siehe Attribut default | Ausdruck der ausgewertet wird |
escapeXml | boolean | Ja | true | Bei true werden xml Sonderzeichen in die XML Entity Codes übersetzt |
default | Object | Ja | -- | Ausdruck der ausgegeben wird falls die Auswertung von value null ergibt |
Die Beispiele zeigen, dass der default Wert als Attribut, oder als Body angegeben werden kann.
Die Aktion <c:set>
Diese Aktion setzt Variablen in einem bestimmten Scope, oder setzt eine Property einer Bean.
Attribut | Java Typ | Dynamik | Beschreibung |
value | String | Ja | Ausdruck der ausgewertetund als Wert genommen wird |
var | String | Nein | Name der Variablen die die neue URL enthält |
scope | String | Nein | Scope in der var abgelegt wird, Standard ist page |
target | Object | Ja | Zielobjekt dem eine Property zugewiesen wird. Eine Bean oder Map |
property | String | Ja | Property von target |
Die Aktion <c:remove>
Diese Aktion entfernt eine Variable aus einem Gültigkeitsbereich
Attribut | Java Typ | Dynamik | Beschreibung |
var | String | Nein | Name der Variable, die entfernt werden soll |
scope | String | Nein | Scope in der var abgelegt wird, Standard ist page |
Beispiel:
Die Aktion <c:catch>
Diese Aktion fängt Fehler ab, es ist möglich die ausgelöste Exception an eine Variable im PageScope zuzuordnen.
Die Aktion <c:catch> hat nur ein einziges optionales Attribut var. Diese Variable liegt automatisch im pageScope.
Die Aktion <c:if>
Die Auswertung des Bodys eine Aktion <c:if> erfolgt nur dann, falls die der im Attribut test angegebene Ausdruck true ergibt.
Attribut | Java Typ | Dynamik | Beschreibung |
test | boolean | Ja | Ausdruck der ausgewertet wird |
var | String | Nein | Variablenname |
scope | String | Nein | Scope von var |
Statt Auswertung eines Bodys kann man auch das Ergebnis der Auswertung in einer Variablen abspeichern.
Die Aktionen <c:choose> <c:when> <c:otherwise>
Diese Aktionen entspricht dem Java switch() Statement. Die Aktionen <c:when> und <c:otherwise> sind Kindelemente der Aktion<c:choose>. Das Vorhandensein einer Aktion <c:otherwise> ist optional.
Die Aktion <c:when> ist die einzigste die ein Attribut besitzt. Ergibt die Auswertung des Ausdruck vom test den Wert true so wird der Body ausgewertet. Innerhalb der Aktion cc:choose> können mehrere <c:when> Ausdrücke sein. Es wird der Body der ersten <c:when> Aktion ausgeführt, die true ergibt. Ansonsten wird der Body der <c:otherwise> Aktion ausgeführt.
Die Aktion <c:forEach>
Es gibt 2 Arten diese Aktion zu verwenden.
Iteration über eine feste Anzahl von Iterationen
Beispiel:
Das Attribut begin und end sind wenn man über eine feste Anzahl von Iterationen iteriert Pflichtattribute.
Iteration über eine Collection
Beispiel:
Attribut | Java Typ | Dynamik | Beschreibung |
begin | int | Ja | Index für Anfang der Iteration |
end | int | Ja | Index für das Ende der Iteration |
items | Collection, Iterator, Enumeration , Map oder ein Array | Ja | Darüber wird iteriert |
step | int | Ja | Schrittweite der Schleife, Standard ist 1. |
var | String | Nein | Variable das das aktuelle Element der Iteration hält |
varStatus | String | Nein | Variable enthält interne Informationen über die Schleifenduchlauf Ist vom Interface LoopTagStatus |
varStatus kann man nur innerhalb einer forEach bzw forToken Aktion verwenden. Das Objekt das varStatus hält ist vom Interface LoopTagStatus und hat folgende Methoden:
Die Aktion <c:forTokens>
Diese Aktion iteriert für jeden Token innerhalb eines String. Die Token werden über sogenannte Trennzeichen (delimiters) getrennt.
Beispiel:
Attribut | Java Typ | Dynamik | Beschreibung |
begin | int | Ja | Index für Anfang der Iteration |
end | int | Ja | Index für das Ende der Iteration |
items | Collection, Iterator, Enumeration , Map oder ein Array | Ja | Darüber wird iteriert |
delims | String | Ja | Liste aller Trennzeichen |
step | int | Ja | Schrittweite der Schleife, Standard ist 1. |
var | String | Nein | Variable das das aktuelle Element der Iteration hält |
varStatus | String | Nein | Variable enthält interne Informationen über die Schleifenduchlauf Ist vom Interface LoopTagStatus |
Die Aktion <c:url>
Diese Aktion wird für URL-Rewriting genommen. Ist der Aufruf Teil einer Sitzung, so wird die Session-ID der URL hinzugefügt.
Attribut | Java Typ | Dynamik | Beschreibung |
value | String | Ja | Pflichattribut - Eine absolute oder relative URL |
context | String | Ja | Optional - Falls die Umleitung zu einer anderen Applikation gehört, brauchen wir den Context Pfad der Zielapplikation |
var | String | Nein | Optional - Name der Variablen die die neue URL enthält |
scope | String | Nein | Optional - Scope in der var abgelegt wird, Standard ist page |
Werden in der URL-Parameter mitgegeben, so können diese als Unterelemente mit der Aktion <c:param> mitgegeben werden.
Die Aktion <c:import>
Im Gegensatz zur include-Direktive und die <jsp:include> Standardaktion, kann man mit der Aktion <c:import> auch Ressourcen aus einer anderen Webanwendung einbinden. Es können auch Parameter mitgegeben werden.
Es ist auch möglich Ressourcen über ftp einzubinden.
Die eingelesene Ressource muss nicht sofort eingebunden werden, sondern kann mit dem Attribut var und scope einer Variablen zugewiesen werden.
Eine andere Möglichkeit ist es, sich über das Attribut varReader eine Instanz von java.io.Reader geben zu lassen. Diese Instanz gibt Methoden wie read(),skip usw. zur Verfügung. Ist ein varReader definiert, so wird im Body der <c:import> Aktion darauf zugegriffen.
Attribut | Java Typ | Dynamik | Beschreibung |
url | String | Ja | Pflicht - Die URL der Ressource die importiert wird |
context | String | Ja | Optional - Context-Path für eine Webanwendung im selben Container. Startet mit einem Slash |
var | String | Nein | Optional - Variable die den Inhalt der Ressource hält |
scope | String | Nein | Optional - Scope der Variable. Standard ist page |
varReader | String | Nein | Optional - Variable die einen java.io.Reader hält |
charEncoding | String | Ja | Optional - Zeichensatz der Ressource |
Beispiel:
Die Aktion <c:redirect>
Diese Aktion dient zur Umleitung der aktuellen URL. Es gibt dem Browser die Antwort, er solle die Anfrage mit der neuen URL betätigen.
Attribut | Java Typ | Dynamik | Beschreibung |
url | String | Ja | Pflicht - Ein relativer Pfad, oder eine absolute URL |
context | String | Ja | Optional - Context-Path für eine Webanwendung im selben Container. Startet mit einem Slash |
Beispiel:
Die Aktion <c:param>
Dient der Paramterübergabe in den Aktionen <c:redirect>, <c:import> und <c:url>.
Es gibt 2 syntaktische Schreibweisen. Einmal wird der Wert des Paramters als Attribut value mitgegeben. Das andereMal wird er über den Body mitgegeben.
Die Aktion <c:param> hat nur als Kindelement einen Sinn.
Inhalt | Abbildung | Source | SCWCD | |||
|< | < | > | >| | Generated by CoCoDiL |