2008-10-22 6 views
13

Ich scheine das Lesen zu erinnern, dass es möglich ist taglib Richtlinien wie zu erklären:declare JSP taglib Richtlinien in web.xml

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

in web.xml. Dadurch entfällt die Notwendigkeit, diese Direktive in jeder JSP-Datei zu duplizieren, in der die Taglib verwendet wird. Könnte mir jemand sagen wie diese Direktiven zu web.xml hinzugefügt werden können?

+1

Schade, denn dafür gibt es eine Lösung: Vorspiele. Mit dem jsp-property-group-Element jsp-config und seinem Include-prelude child können Sie ein Fragment angeben, das in einer beliebigen JSP gemäß Ihrem eigenen regulären Ausdruck enthalten sein soll. Sie können einfach alle Taglib-Direktiven dort hineinstellen. – nitind

+6

Diese Frage sollte definitiv nicht als off-topic geschlossen werden. –

Antwort

27

Das Element taglib in web.xml erfüllt einen anderen Zweck als die taglib Direktive, die Sie oben haben.

Wie David sagte, ist die taglib Direktive auf jeder Seite erforderlich.

Wenn Sie viele Seiten haben, die übliche Taglibs verwenden, können Sie dies abkürzen, indem Sie die taglib-Anweisungen in eine Include-Datei einfügen und diese Datei auf jeder Seite einschließen. Aber egal, wie Sie es tun, die Taglib-Direktive muss irgendwie auf der Seite sein.

Den Tag, das Sie auf jeder Seite aufnehmen müssen wie folgt aussieht:

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

Wenn Sie eine benutzerdefinierte taglib in einem benutzerdefinierten Ort haben, können Sie auch einen Ort in Bezug auf die Webapp root angeben:

<%@ taglib prefix="ex" uri="/taglib.tld" %> 

Further reading on the taglib directive

die taglib Direktive von web.xml Karten Tag URIs zum physischen Standort Ihres taglib. Es ist optional, da JSP 2.0 als konforme Container in einer Reihe von Standardspeicherorten suchen, um die Taglib:/WEB-INF und seine Unterverzeichnisse/META-INF sowie JAR-Dateien automatisch zu ermitteln.

Es sieht wie folgt aus, in web.xml:

<taglib> 
    <taglib-uri> 
    http://www.example.com/taglib 
    </taglib-uri> 
    <taglib-location> 
    /taglib.tld 
    </taglib-location> 
</taglib> 

Und die taglib ist in der JSP-Seite wie folgt aus (die taglib Richtlinie unvermeidbar ist auf jeder Seite!) Verwiesen:

<%@ taglib prefix="ex" uri="http://www.example.com/taglib" %> 

Dies entspricht dem zweiten Beispiel, das ich für die obige Taglib-Anweisung angegeben habe. Der größte Unterschied besteht darin, wie Sie auf den Taglib-Speicherort verweisen.

This page enthält ein bisschen mehr Informationen.

+0

ich denke, es ist nicht richtig Beispiel gibt es immer noch Fehler java.lang. ClassNotFoundException: org.apache.taglibs.standard.tei.ImportTEI –

+1

Schöne Erklärung. Ich sollte hier hinzufügen, dass Sie ein uri-Tag in der Tag-Bibliothek Beschreibungsdatei (Tld-Datei) zum Beispiel '/ELFunctionTagLibrary' hinzufügen und diese uri verwenden können auf deinen Jsp-Seiten. – skiabox

5

Entschuldigung, Sie irren sich leicht. Wenn eine Seite eine Taglib verwendet, müssen Sie dafür eine taglib-Anweisung auf der Seite haben. Sie könnten die allgemeinen Taglib-Direktiven in eine Include-Datei einfügen, die alle Seiten mit einer include-Direktive enthalten, aber zum Zeitpunkt der Kompilierung muss die taglib-Direktive da sein.

Ich bevorzuge es, die Taglib-Elemente in der web.xml zu haben, stattdessen muss die Taglib-Direktive den URI-Wert angeben, der im Element "uri" in der TLD innerhalb der Taglib-Jar-Datei in Ihrem WEB verwendet wird -INF/lib.

+0

Was ist der Ansatz, wenn ich Apache-Kacheln verwende? Muss ich dem gleichen folgen, um die Taglib-Anweisungen einzuschließen. Ich habe versucht, Taglib-Anweisungen in der Basisvorlage jsp zu definieren. Aber, ich bin nicht in der Lage, Verweis von ihnen in jsp wie Kopf-, Fußzeile und andere jsp, die mit Basis-Vorlage Jsp konfiguriert sind. – srinivas

+0

Got Antwort für über meine Frage link: http://stackoverflow.com/questions/8687873/spring-and-apache-tiles-with-shared-taglib – srinivas