Seitengeneratoren verketten

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Seitengeneratoren einsetzen


Der Ersatztext aus einer Behandlungsroutine für das Ereignis HTTPProd.OnHTMLTag muss nicht mit der endgültigen HTML-Sequenz identisch sein, die in der HTTP-Antwortbotschaft verwendet wird. Möglicherweise möchten Sie verschiedene Seitengeneratoren einsetzen und die Ausgabe des einen Generators als Eingabe für den nächsten verwenden.

Am einfachsten können Sie Seitengeneratoren miteinander verketten, indem Sie jeden Seitengenerator mit einem separaten Aktionselement verknüpfen, wobei alle Aktionselemente identische Einstellungen für die PathInfo- und MethodType-Eigenschaften haben müssen. Das erste Aktionselement stellt den Inhalt für die Web-Antwortbotschaft mithilfe seines String-Generators bereit. Über die OnAction-Ereignisbehandlungsroutine muss sichergestellt werden, dass die Botschaft nicht als vollständig bearbeitet gilt. Das nächste Aktionselement ändert dann den Inhalt der Antwortbotschaft mit der Methode ContentFromString seines Generators. Ist die Web-Antwortbotschaft danach noch nicht fertiggestellt, übernimmt das dritte Aktionselement die Verarbeitung. Dieser Vorgang wird fortgesetzt, bis die Antworterstellung abgeschlossen ist. Alle Aktionselemente außer dem ersten verwenden eine OnAction-Ereignisbehandlungsroutine der folgenden Form:

 procedure WebModule1.Action2Action(Sender: TObject; Request: TWebRequest;
    Response: TWebResponse; var Handled: Boolean);
 begin
   Response.Content := PageProducer2.ContentFromString(Response.Content);
 end;
 void __fastcall WebModule1::Action2Action(TObject *Sender,
    TWebRequest *Request, TWebResponse *Response, bool &Handled)
 {
   Response->Content = PageProducer2->ContentFromString(Response->Content);
 }

Angenommen, eine Anwendung liefert Kalenderseiten als Antwort auf Anforderungsbotschaften zurück, in denen der Monat und das Jahr der gewünschten Seite angegeben sind. Auf jeder Kalenderseite befindet sich ein Bild. Darauf folgt der Name und das Jahr des Monats zwischen kleinen Bildern mit dem vorherigen Monat und den nächsten Monaten. Daran schließt sich der Kalender an. Das resultierende Bild sieht in etwa folgendermaßen aus:

Calex.jpg

Das allgemeine Format des Kalenders wird in einer Vorlagendatei gespeichert. Sie hat folgenden Inhalt:

<HTML>
<Head></HEAD>
<BODY>
<#MonthlyImage> <#TitleLine><#MainBody>
</BODY>
</HTML>

Die Behandlungsroutine für das Ereignis OnHTMLTag des ersten Seitengenerators ermittelt den Monat und das Jahr aus der Anforderungsbotschaft. Unter Verwendung dieser Informationen und der Vorlagendatei führt sie folgende Aktionen aus:

  • <#MonthlyImage> wird durch <#Image Month=January Year=2000> ersetzt.
  • <#TitleLine> wird durch <#Calendar Month=December Year=1999 Size=Small> January 2000 <#Calendar Month=February Year=2000 Size=Small> ersetzt.
  • <#MainBody> wird durch <#Calendar Month=January Year=2000 Size=Large> ersetzt.

Die Ereignisbehandlungsroutine für OnHTMLTag des nächsten Seitengenerators benutzt den vom ersten Seitengenerator erzeugten Inhalt und ersetzt das Tag <#Image Month=January Year=2000> durch das entsprechende HTML-Tag <IMG>. Ein weiterer Seitengenerator löst die #Calendar-Tags mit entsprechenden HTML-Tabellen auf.

Siehe auch