JSP: Verändertes Include (Text lesen)

Hallo,

ich habe folgendes Problem.
Ich habe einen String, der dynamisch erzeugt wird. Dieser String enthält im Endeffekt Teile einer JSP (also auch JSP-Elemente, wie z.B. Tablibs, …).
Unter PHP gibt es eine eval-Funktion die das „interpretierte“ Ergebnis als String zurückliefert.
Unter JSP (Tomcat 3.2) habe ich nur ein include über das Context Objekt gefunden. Das hilft mir aber nicht, denn damit kann man nur Dateien „includen“ (Keine dynamischen Strings).

Ich weiß, dass dies nicht gerade gut für die Performance ist, aber mich würde interessieren, ob es da trotzdem eine allgemeine (sprich für beliebige Servlet/JSP-Engines) Lösung gibt.

Beispiel:
";

// Nun kommt der SpecialInclude
out.includeEval(jspCode);
%>
Ergebnis soll „Hallo Bar“ sein.

Ich hoffe, dass ich mich einigermassen verständlich ausgedrückt habe.

Gruss,
Frank

Hallo Frank,

mit der Klasse MessageFormat sollte so etwas gehen

String x = „Hallo {0}“;
MessageFormat mf = new MessageFormat(x);

String msg = mf.format(„Bar“);

es stehen noch jede Menge Methode müßte im java.text.*;
enthalten sein.

m.f.g
Thomas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Thomas,

eins vorweg: Die Idee ist gut, aber für mich leider nicht so ganz brauchbar, denn der Platzhalter {0} soll bei meiner Problemstellung selber wieder JSP-Code enthalten, der bei der Ausgabe ausgewertet wird.

Hallo Frank,

mit der Klasse MessageFormat sollte so etwas gehen

String x = „Hallo {0}“;
MessageFormat mf = new MessageFormat(x);

String msg = mf.format(„Bar“);

es stehen noch jede Menge Methode müßte im java.text.*;
enthalten sein.

Bei (quasi)statischen Meldungen ist das in Ordnung. Wenn aber „Bar“ nun eine Methode ist, wobei der Name der Methode (hier zum Beispiel „Bar“) aus einer Datenbank kommt, dann nützt mir das nicht so viel.
Ich kann also erst zur Laufzeit entscheiden, was nun passieren soll. Genau das passiert bei einer JSP (wenn auch auf etwas anderer Ebene).

Trotzdem vielen Dank für Deine Bemühungen.

Gruss, Frank