2008-09-29 9 views

Antwort

4

Wenn Sie einen taglib der Behälter typischerweise:

  • Writes und ruft eine Hilfsmethode aus _jspService
  • Im Inneren des Hilfsmethode eine Instanz der Tag-Klasse erstellt und Standardmethoden aufgerufen werden (setParent(), doStartTag(), doEndTag() etc ...)

Dies hält den gesamten Code innerhalb derselben Ressource (die Anforderung nicht an eine andere Komponente übergeben werden) und somit können Sie in Looping bauen Verhalten und Zugriff auf andere Komponenten auf t Die aktuelle Seite.

Es gibt Overhead beim Lernen von Tag-Bibliotheken. Aber sobald Sie Ihr erstes Tag haben, funktioniert alles bergab. Auch das Endergebnis wird für Nicht-Entwickler einfacher zu verstehen sein (vorausgesetzt, Sie wählen gute Namen für die Tags).

+0

Ich habe eine JSP-Datei, und es enthält eine andere JSP ... im Wesentlichen gibt es zwei Anforderungen, eine für die Haupt-JSP, und die 2. Anfrage für die Include gemacht? obwohl, wenn ich eine taglib/tagfile in meinem JSP verwende, gibt es nur Anfrage, und die Taglib/Tagfile wird von der gleichen Anfrage innerhalb _jspService aufgerufen? – joshjdevl

+0

Sie denken an einen Forward. Includes geschehen innerhalb derselben Anfragen. – sblundy

-2

taglibs machen es einfacher, Parameter zu definieren und zu handhaben, aber es gibt einen erheblichen Aufwand, um sie zu entwickeln. Includes sind einfacher, aber weniger leistungsstark. Viel hängt von Ihrem Stil ab.

Meiner Erfahrung nach verwenden Leute im Allgemeinen nur Includes, weil sie sich nicht die Zeit nehmen wollen, Tablibs zu erstellen. Zu einem fairen Durcheinander führen. Solange Ihr Team klein und Ihr nicht zu komplex ist, ist es nicht so schlimm. Aber es ist ein Code-Geruch.

6

Mit Taglibs können Sie (typisierte) Parameter definieren, die Sie dokumentieren können. Auch Taglibs können sich ihrer Position im Objektbaum bewusst sein, also in einem anderen Kontext anders agieren; oder rufen Sie eine bestimmte Vorlage immer wieder auf, um Iteratoren oder Anweisungskonstrukte zu erstellen.

Wissen Sie, dass Taglibs nicht unbedingt in Java geschrieben sein müssen? Es gibt auch ein Konzept namens Tagfiles, mit dem Sie Ihre Taglib in JSP schreiben können; oft besser geeignet für flache komponenten ... ganz nah dran.

+0

ja, cool, entwickelte jetzt tagfiles, obwohl verwirrt wurde, was das diff mit einem jsp. Heres ein Szenario, ich brauche etwas Abhängigkeitsinjektion, also suchte nach einem jspinit für eine tagfile, obwohl es nur für jsps scheint? – joshjdevl

+0

Was genau würden Sie in diesem Zusammenhang Bij 'Abhängigkeitsinjektion' bedeuten? Arbeiten Sie in einer Model2- oder komponentenbasierten Architektur? Können Sie etwas sagen, was Sie erreichen wollen? – p3t0r

+0

Komponente based.each Tagdatei ist eine eigene indep-Komponente. Die Tagdatei ruft eine im Frühjahr verwaltete Service-Bean auf, ex service1 ruft eine Liste aller Kunden ab. Ich möchte, dass diese Tag-Datei die Service-Bean, den Methodenaufruf und dann das Ergebnis in einer netten Tabelle formatiert. Diese Tagdatei ist in der JSP enthalten. – joshjdevl

1

Tags (die den einfach zu verwendenden JSP-ähnlichen Tag-Dateimechanismus enthalten) unterstützen den Aufruf mit stark typisierten, benannten Parametern.

Ein weiteres unglaublich nützliches und überraschend oft übersehenes Feature von JSP-Tags ist der Attributtyp JspFragment. Auf diese Weise können Sie einen Teil des JSP-Codes als Parameter an ein Tag übergeben, das möglicherweise wiederholt aufgerufen wird.

Enthält keine dieser leistungsstarken Parametrierungsfunktionen.

+0

Interessant, haben Sie eine gute Verbindung zu einem Beispiel für JspFragment? – joshjdevl