Jakarta Standard Tag Library
JSTL | |
---|---|
Aktuelle Version: | 1.2.1 (Dezember 2011) |
Betriebssystem: | plattformunabhängig |
https://projects.eclipse.org/projects/ee4j.jstl |
Die Jakarta Standard Tag Library (JSTL; früher JavaServer Pages Standard Tag Library) ist eine Sammlung von vier Custom-Tag-Bibliotheken, die für die Erstellung von JSP-Seiten hilfreich sind.
Die JSTL wird im Rahmen des Java Community Process (JCP) unter JSR 052 verwaltet. Innerhalb des Jakarta-Projektes gibt es zu dieser Spezifikation Referenzimplementierungen.
Bestandteile
In der Version 1.1 sind folgende Bibliotheken vorgesehen:
- core: iterative, konditionale, URL-spezifische und allgemeine Tags
- xml: Tags aus dem Bereich XML und XML-Transformation
- sql: Tags zur direkten Datenbankverarbeitung
- i18n: Tags zur Formatierung und Internationalisierung
Geschichte
In der ursprünglichen Version 1.0 war gegenüber der Version 1.1 eine Expression Language vorgesehen. Mit JSP 2.0 wurde die JSP-EL in die JSP-Spezifikation selbst aufgenommen. Das primäre Ziel der JSTL 1.1 ist dementsprechend die Anpassung der Bibliothek auf die JSP-EL für JSP 2.0. Mit der Version 1.2 der Bibliothek wird die JSTL auf den aktuellen Stand bezüglich der Vereinheitlichung der Expression Language durch die JSP 2.1 und JSF-1.2-Spezifikationen gebracht. Des Weiteren ist die JSTL mit Version 1.2 Teil der Java-EE-5-Plattform.
Verwendung der JSTL 1.1
Da für die JSTL 1.1 die JSP-EL vorausgesetzt wird, muss ein Servlet-Container mindestens der JSP-2.0-Spezifikation genügen, damit sie auf diesem verwendet werden kann. Die Referenzimplementierung gliedert sich in zwei JAR-Archive standard.jar und jstl.jar, die bei den meisten Containern üblicherweise nur im lib-Pfad der Webanwendung zu finden sein müssen. Zur Erhaltung der Rückwärtskompatibilität wird die JSTL 1.1 durch den URI http://java.sun.com/jsp/jstl/fmt
referenziert, während man bei JSTL 1.0 http://java.sun.com/jstl/fmt
verwendete.
Beispiel JSP-Seite in XML-Schreibweise (JSPX):
<?xml version="1.0" encoding="utf-8" ?>
<jsp:root
xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
version="2.0">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<title>JSTL 1.1</title>
</head>
<body>
<h1>Iteration</h1>
<ul>
<c:forEach var="num" begin="1" end="10">
<li>Nummer <c:out value="${num}"/></li>
</c:forEach>
</ul>
<h1>Formatierung</h1>
<p>
Währung: <fmt:formatNumber value="10000" type="currency" currencyCode="EUR" />
</p>
</body>
</html>
</jsp:root>
Erläuterungen zum JSP-Code:
Im Element jsp:root
wird die Verwendung der Basis- und der I18N-Taglibs (core und fmt) aus der JSTL angezeigt und diese an entsprechende XML-Namensräume gebunden. Unter der Überschrift Iteration wird das forEach-Tag aus der core-Bibliothek verwendet: Der Tag-Body (das heißt, der Inhalt des Tags) wird hier zehnmal ausgegeben. In dieser Schleife findet sich mit ${num}
ein JSP-Expression: Hier wird mit jedem Schleifendurchlauf der aktuelle Wert von ‚num‘ ausgegeben. Unter der Überschrift Formatierung wird das formatNumber-Tag aus der fmt-Bibliothek der JSTL verwendet. Je nach eingestellter Sprache (diese lässt sich zum Beispiel per fmt:setLocale
setzen) wird die Zahl 10000 hier anders formatiert (kann zum Beispiel auf Deutsch als „EUR 10.000,00“ und auf Englisch als „EUR 10,000.00“ ausgegeben werden).
Die JSTL und Struts
Im Gegensatz zum Struts-Framework ist die JSTL nicht an ein bestimmtes Architektur-Paradigma wie z. B. MVC gebunden. Beide Tag-Bibliotheken besitzen gleichnamige Tags. Daher muss bei gemischter Verwendung der eindeutige Präfix (JSP) bzw. der Namensraum (JSPX) beachtet werden.