Start - Publikationen - Wissen - TOGAF - Impressum -

JSP Standard Tag Library - JSTL1.1


Bereitstellung der JSTL:

  1. jstl.jar + standard.jar aus einem example-Verzeichnis des Servers nach WEB-INF/lib kopieren
  2. Im Code Directive <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> (uri siehe im uri-Element der tld)
  3. Im Code nutzen mit

c:forEach


Iteriert über Arrays und Collections

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
:
<c:forEach var="x" items="${myListOrCollection}" varStatus="stat">
  Value: ${x}
  Loop count: ${stat.count}
</c:forEach>
Auch über eine java.util.Map kann iteriert werden, hier muss man sich nur klar machen, dass jeder Eintrag vom Typ Map.Entry ist und die Methoden getKey und getValue besitzt. Deshalb funktioniert folgender Code:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
:
<c:forEach var="item" items="${mymap}">
  Key: ${item.key}
  Value: ${item.value}
</c:forEach>

c:if


Kondition

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
:
<c:if test="${some eq 'abc'}">
:
</c:if>

c:choose


Verzweigung

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
:
<c:choose>
  <c:when test="${some eq 'a'}">
   :
  </c:when>
  <c:when test="${some eq 'b'}">
   :
  </c:when>
  <c:otherwise>
   :
  </c:otherwise>
</c:choose>

c:set mit var


Setzen von Attributen in einem der Scopes 'page' (default), 'request', 'session' oder 'application'

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
:
<c:set var="myVar" value="Hello" scope="session" />
:
<c:set var="myVar" value="${hello.message}" scope="session" />
:
<c:set var="myVar" value="Hello">
  tag-body (String oder EL Ausdruck, wird ausgewertet und für myVar eingesetzt) 
</c:set>

Wenn value null ergibt, wird die Variable gelöscht! Wenn scope nicht definiert ist, wird in der Reihenfolge 'page', 'request', 'session' und 'application' danach gesucht. Wird nichts gefunden (und value ist nicht null) wird die Variable angelegt. TODO: darf var auch ein EL Ausdruck sein?

c:set mit target


Ändern von Beans oder Maps

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
:
<c:set target="${myBeanOrMap}" property="propName" value="Hello" scope="session"/>
:
<c:set target="${myBeanOrMap}" property="propName" >
  tag-body (String oder EL Ausdruck, wird ausgewertet und eingesetzt) 
</c:set>

${myBeanOrMap} darf nicht null sein und muss eine Map oder eine Bean sein. var und target dürfen nicht zusammen benutzt werden.

c:remove


Löschen von Attributen

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
:
<c:remove var="myVar" scope="session" />

var darf kein EL Ausdruck sein! scope ist optional, wenn nicht angegeben, wird in der Reihenfolge 'page', 'request', 'session' und 'application' gesucht.

c:import


Einfügen von URL-Inhalten zur Laufzeit

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
:
<c:import url="http://www.a.b/do.jsp" />
:
<c:import url="do.jsp">
  <c:param name="nachricht" value="Hallo" />
</c:import>
Nutzung im einer JSP Code:
:
Nachricht: ${param.nachricht}
:
url darf auch eine Seite außerhalb des Containers sein.

c:url


Hyperlinks mit Parmeterencoding, URL-Rewriting für Sessiontracking

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
:
<a href="<c:url value='http://www.a.b/do.jsp' />">Click</a>
:
<a href="<c:url value='/do.jsp' />">Clack</a>
:
<a href="
  <c:url value='http://www.a.b/hello.jsp'>
    <c:param name="message" value="Hallo Welt" />
  </c:url>
">Click</a>

Die URL in value wird automatisch mit URL-Rewriting behandelt (wenn nötig). Die Parameter im c:url-body werden automatisch encoded (nicht aber die URL in value!).

c:forTokens


Iterator über einen Tokenizer

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
:

c:redirect


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
:

c:out


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
:

Weitere JSTL


Paket Bedeutung
fmt:*** Formatierung und I18N
sql:*** SQL
xml:*** XML

c:catch


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
:
<c:catch>
 <%= 1000/0 %>
</c:catch>
:
<c:catch var="exceptionObject">
 <%= 1000/0 %>
</c:catch>
<c:if test="${exceptionObject != null}">
 Fehler: ${exceptionObject.message}
</c:if>

Hinweis: exceptionObject.message funktioniert, weil Throwable eine Methode getMessage() besitzt.

Referenzen


JSTL Tutorial

copyright © 2002-2018 | Dr. Christian Dürr | prozesse-und-systeme.de | all rights reserved