Jakarta Standard Tag Library

JSTL
Entwickler: Eclipse Foundation
Aktuelle Version: 1.2.1  (Dezember 2011)
Betriebssystem: plattformunabhängig
Lizenz: Eclipse Public License 2.0, GPL linking exception
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:

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.

Weblinks