2010-03-08 26 views
5

Ich fühle mich wie ich etwas vermisse - von was es scheint, JSP kommt aus der Box mit Unterstützung für Tags, wie this question's answer zeigt (der Typ fragte eine reine JSP Frage und bekam eine Antwort mit Tags). Aber wenn ich versuche, den gegebenen CodeAktivieren von JavaServerPages Standard-Tag-Bibliothek (JSTL) in JSP

<c:out value="${myString}"/> 

(mit myString zuvor definiert ist, natürlich) zu laufen, schreibt die jsp nur die obige Zeile in den HTML-Code.

Muss ich etwas extra tun, um es zu aktivieren?

Antwort

8

JSTL Unterstützung ist auf dem appserver/servletcontainer verwendet abhängig. Einige Schiffe mit JSTL, andere nicht. Dies ist unabhängig von der JSP/Servlet-Version. Zum Beispiel Sun Glassfish (wie eine fullged Java EE-Implementierung) wird mit JSTL out of the box und zum Beispiel Apache Tomcat (wie eine einfache JSP/Servlet-Implementierung) nicht ausgeliefert. Für sie müssen Sie JSTL selbst installieren.

Es ist ziemlich einfach wirklich (vorausgesetzt, Sie Servlet 2.5 oder höher verwenden):

  1. Herunterladen jstl-1.2.jar.
  2. Setzen Sie es in den Ordner /WEB-INF/lib von webapp (der Teil des Standardklassenpfads von webapp ist).
  3. Deklarieren Sie die Tags oben in JSP gemäß this JSTL documentation (klicken Sie auf eine der Taglibs, um die Deklarationsbeispiele anzuzeigen). Für JSTL core es ist die folgende:

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

Das ist alles. Wenn Sie (immer noch) Servlet 2.4 verwenden, müssen Sie stattdessen jstl.jarandstandard.jar herunterladen (die Teil von JSTL 1.1 sind). Rest der Schritte sind die gleichen (nur in Klassenpfad und deklarieren oben in JSP).

Möglicherweise stellen Sie fest, dass einige schlechte Online-Tutorials vorschlagen, die JAR-Datei zu extrahieren und web.xml der Webanwendung mit den TLD-Deklarationen zu überdecken. Sie sollten das nie tun, dies ist ein falscher Vorschlag, der durch die Änderung der Taglib-URIs während des JSTL 1.0-> JSTL 1.1-Schritts verursacht wird. Anstatt die Taglib-URIs in JSP zu aktualisieren, entschieden sich die einen, die alten Taglib-URIs in web.xml neu zu definieren, und es wurde ein Mythos.

JSP selbst wird mit nur den <jsp:xxx> Tags aus der Box ausgeliefert. Sie finden sie alle in this document (das ist zwar ziemlich alt, hat sich aber mit der aktuellen JSP 2.2 nicht verändert).

1

Sie müssen die taglib an der Spitze der JSP erklären:

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

Danke! Das sieht wie ein Schritt in die richtige Richtung aus, aber immer noch keine exakte Antwort, da ich die Ausnahme 'org.apache.jasper.JasperException: Die absolute URL: http://java.sun.com/jsp/jstl/core bekomme kann weder in web.xml noch in den JAR-Dateien gelöst werden, die mit dieser Anwendung bereitgestellt werden. Wenn ich etwas installieren muss, ist das in Ordnung - aber ich dachte, diese Taglib kommt "out of the box" mit jsp. Können Sie die Antwort zu Ihrer Antwort hinzufügen? – olamundo

+0

@Noam: Es kommt nur auf bestimmten Versionen von JSP (2.0 und älter, in diesem Fall) aus der Box. Aber du hast uns nichts über dein Setup erzählt, also kann ich dir keine bessere Antwort geben. – skaffman

+0

Skaffman, das ist eigentlich nicht wahr. Dies ist abhängig vom verwendeten Server. – BalusC