2009-05-22 8 views
2

Die "neuen" JSP 2.0 Tag-Datei-Tags sind unglaublich nützlich, und in den meisten Fällen (zumindest das, was ich gesehen habe) bieten sie ein weit besser lesbares Format als eine Java-Klasse. Während Tag-Dateien fast alles tun können, was ein Java-Klasse-Tag kann, gibt es eine riesige Sache, die sie nicht tun können: "scripting" body content (dh. "<%" Zeug zwischen den Start- und Ende-Tags) .Warum können JSP 2.0-Tag-Dateien keinen Body-Content von "JSP" haben?

Also, meine Frage ist mehrteilig:

  1. Weiß jemand, warum (von einem Design-Standpunkt aus) ist das? Ist es unmöglich, dass Tag-Dateien aufgrund der Art der Implementierung solchen Inhalt haben?
  2. Weiß jemand, ob es zukünftige Pläne gibt, body-content = "JSP" in Tag-Dateien zuzulassen (in einer zukünftigen Version des JSP-Standards vielleicht)?
  3. Kennt jemand eine Möglichkeit, Tag-Dateien zu "hacken", um ihnen zu ermöglichen, Skriptinhalt zu haben (wie durch einen body-content von scriptless, und dann den Inhalt irgendwie zu verarbeiten)?

Grundsätzlich mein Traum ist es, eines Tages Tag-Dateien zu schreiben, die in Ausnahmen führen nicht, wenn jemand einen

<%= myVar %>

innen versetzt, und ich versuche nur, um zu bestimmen, ob dieser Traum ist hoffnungslos oder nicht.

+0

Ich denke, ein anderer Weg, diese Frage zu formulieren ist: Warum können Tag-Datei-Tags nicht einfache ("klassische") Tags erstellen (gibt es einige technische Einschränkungen)? Gibt es überhaupt einen Weg (auch wenn es auf "Hacks" zurückgreifen muss), um ein "klassisches" Tag mit Tag-Dateien zu erstellen? – machineghost

+0

Das Problem mit den Antworten "Vermeiden Sie nur das Scripting in Ihren JSPs" ist, dass unsere gesamte Anwendung (sieben Jahre Code) auf JSPs mit Skripting basiert (natürlich auch auf Klassen, aber kein klares Modell/View/Controller-Trennung). Leider kann ich nicht einfach alles, was wir schon geschrieben haben, aus dem Fenster werfen. Das lässt mir eine Wahl: Entwickle alle neuen Tags mit Klassen (* wince *) oder finde eine Möglichkeit, Tag-Dateien auf unseren bestehenden Seiten zu verwenden ...und diese Stack Overflow-Abfrage ist meine Art zu versuchen, herauszufinden, wie das letztere zu tun ist. – machineghost

+0

Auch nur um zu klären, ob es wirklich unmöglich ist, Tag-Datei-Tags mit Scripting innerhalb zu haben, werde ich das Kopfgeld auf diese Frage an denjenigen vergeben, der die beste Erklärung dafür liefert, warum es keine Möglichkeit gibt. Aber ich hoffe wirklich, dass jemand einen Weg gefunden hat (auch wenn es eine "hacky" Lösung erfordert, wie den Body-Inhalt auf "tagdependant" zu setzen und dann diesen Inhalt irgendwie zurück durch das Servlet zu füttern). – machineghost

Antwort

3

Die JSP-Tags wurden so entworfen, dass eine vollständige Trennung der Probleme zwischen der Darstellungsschicht und dem dahinter liegenden Code erfolgt. JSP-Seiten sollen von Designern bearbeitet werden und daher ist die Verwendung von Java-Code nicht geeignet.

Ich nehme an, dass Sie Ihre Programmiergewohnheiten in dieser Philosophie anpassen müssen. Sie können Ihren gesamten Java-Code in Ihre Beans verschieben. Tun Sie, was dort benötigt wird, und übergeben Sie dann die entsprechende Bean an die JSP-Seite. Exception Handling sollte auch dorthin gehen. Wenn dies nicht genug ist, können Sie immer eigene Tags erstellen, die Sie verwenden können.

2

Sie können, wenn Sie Old Style Tags verwenden, d. H. Von BodyTag abgeleitet. SimpleTag-Implementierungen können jedoch nicht.

Da JSP-Fragmente nicht Scriptlets unterstützen, die von einem SimpleTag kann nicht „JSP“ sein

persönlich überhaupt würde ich vermeiden Java mit Hilfe von Tags schreiben, wenn Sie können, und verwenden Sie einfach der neue .tag Stil. Sie können Java-Code in solche Tag-Dateien integrieren, obwohl Sie im Allgemeinen, wenn Sie dazu gezwungen werden, wahrscheinlich etwas falsch machen.

+0

"Sie können, wenn Sie alte Stil-Tags verwenden" Heh, ich weiß; deshalb kenne ich Body-Content-JSP überhaupt :-) Aber ich möchte ähnliche Funktionalität mit Tag-Dateien erreichen; Wie Sie festgestellt haben, sind sie ein viel besserer Mechanismus zum Erstellen von Tags als Java-Klassen. Was "etwas falsch macht", weil ich JSP-Inhalte in meinen JSPs habe, folge ich nicht. ELScript und JSTL können einiges erledigen, aber nicht alles. Darüber hinaus stecke ich mit einer Unzahl von Legacy-Seiten fest, die Scripting verwenden, also selbst wenn ich alles ohne Scripting-Bits wiederholen könnte ... ich kann nicht, weil es viel zu lange dauern würde. – machineghost

+0

Ich weiß, dass dies ein alter Thread ist, ich habe Fragen zu JSP-Tags gegraben ... aber in einer Situation wie dieser, warum upgraden? Sie könnten beim alten JSP-Format bleiben oder andere Anforderungen haben? – stivlo