2012-04-09 14 views
1

wenn wir verwenden, um die Compiler-Direktive unten und ich verwende nicht in web.xmlWie findet die JSP-Taglib die .TLD?

<%@ taglib uri="/struts-tags" prefix="s"%> 

was wird mit dem Kater tun? Wie findet die Taglib die .tld? Hat es eine Suchsequenz? Ich möchte das Prinzip kennen. thx ~

Antwort

5

Hier ist die Art und Weise funktioniert es:

Die JAR-Datei, die Tag-Bibliothek enthält, hat eine .tld-Datei, die wiederum einen <uri>-Tag mit einem String, der den Wert in Ihrer JSP übereinstimmen muss.

Zum Beispiel des Standard JSTL JAR hat eine c.tld Datei mit diesem URI:

<uri>http://java.sun.com/jsp/jstl/core</uri> 

, dass die URI ist, die Sie benötigen den Kern JSTL-Tag-Bibliothek zu verwenden.

Es hat nichts damit zu tun, wo Sie die JARs und alles, was mit der .tld zu tun hat.

+0

Ich verstehe nicht ganz, können Sie ausführlicher sagen. Ich weiß, dass es das -Tag verwendet, um den Wert in meiner JSP zu vergleichen, aber wie kann es die JAR-Datei finden, die das .tld hat? – koppt

+0

Ich stimme nicht zu - Sie wissen nicht, dass es den Tag-Wert verwendet, weil das, was Sie gepostet haben, falsch ist. Siehe die Dokumentation: http://struts.apache.org/1.x/userGuide/configuration.html. Wie ist die JAR in Ihrem CLASSPATH - entweder das/lib-Verzeichnis Ihres App-Servers oder das WEB-INF/lib Ihres WAR. – duffymo

+0

Kann ich denken: die .TLD in der JAR hat eine , und <% @ taglib ...> wird seine mit .TLD übereinstimmen, wenn die gleiche dann das Tag bekommen? Also wird der Compiler das JAR in meinem CLASSPATH durchsuchen und das richtige .tld finden? – koppt

0

Der Container sucht nach allen .TLD in Ihrer Webanwendung, zuerst im WEB-INF-Verzeichnis, dann im gesamten Unterverzeichnis von WEB-INF, und wenn es eine JAR-Datei gibt, sucht er darin, ob es ein Tld gibt Datei. Danach wird der Container jeden URI mit der Tld-Datei zuordnen.