AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Benötige Hilfe bei TPageProducer
Thema durchsuchen
Ansicht
Themen-Optionen

Benötige Hilfe bei TPageProducer

Ein Thema von axellang · begonnen am 3. Sep 2014 · letzter Beitrag vom 4. Sep 2014
 
axellang

Registriert seit: 3. Mai 2003
Ort: München
138 Beiträge
 
Delphi XE2 Enterprise
 
#1

Benötige Hilfe bei TPageProducer

  Alt 3. Sep 2014, 15:12
Hallo Leute,

schreibe gerade an einer ISAPI Extension für den IIS (Srv. 08/12). Soweit so gut, alles funktioniert wie es soll, nun will der Kunde natürlich
seine eigene Templates verwenden. Ok, Templates mit Tags bestückt (<#MeinTag>) und den TPageProducer (PP) für die Verarbeitung vorbereitet.
Das haut auch bestens hin, bis mir beim debuggen auffiel, dass der PP im OnHTMLTag die Tags zweimal ersetzt und das ist sehr, sehr schlecht.

Ich verwende mit unter ein "Data Modul" das verschiedene Werte verarbeitet und im OnHTMLTag des PP die Werte den Tags zuweist.
Hier mal etwas BeispielCode:
Delphi-Quellcode:
procedure TWebModuleMain.PageProducer1HTMLTag(Sender: TObject; Tag: TTag;
  const TagString: string; TagParams: TStrings; var ReplaceText: string);

var
 dm: TDataModuleHtml;
begin
  dm := TDataModuleHtml.Create(nil);
  try
    if SameText(TagString, 'TAG_1') then
      ReplaceText := dm.GetBlaBla1

    else if SameText(TagString, 'TAG_2') then
      ReplaceText := dm.GetBlaBla2

   // Usw...

    else
      ReplaceText := '';

  finally
    dm.Free;
  end;
end;

end.

procedure TWebModuleMain.WebModuleMainDefaultHandlerAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  PP.HTMLFile := Request.TranslateURI('/templates/template1.html');
  Response.Content := PP.Content;
end;
Also wenn OnHTMLTag aufgerufen wird dann passiert folgendes:
1. DataModule (dm) wird erstellt
2. Er findet den ersten Tag und ersetzt diesen mit dem Wert der function dm.GetBlaBla1
3. Springt ins finally
4. Erstellt DM
5. Findet den zweiten Tag und ersetzt diesen mit dem Wert der func. dm.GetBlaBla2
6. Springt ins finally

Nun sind alle Tags ersetzt und das wars dachte ich, doch dann fängt alles von vorne an.
Nachdem der zweite Durchlauf beendet ist, spuckt er die Seite aus.

Wenn ich nun in den Tamplates nur eine einzige Tag-Stelle setze, dann macht der PP das richtig.
Damit meine ich, der Tag wird ersetzt und der PP geht aus der Methode raus und Ende.

Das Problem hierbei ist, das die function dm.GetBlaBla1 aus dem DataModule z.B. Werte von einem anderen
Server abfragt und die function dm.GetBlaBla1 womöglich auch. Im Umkehrschluss bedeutet das,
um so mehr Tags ich im Template habe um so mehr Fremd-Serveraufrufe ich damit produziere.

Wie kann ich das abstellen?
Mache ich bei der Verwendung des TPageProducer generell einen Fehler?
Ist diese Komponente dafür gedacht oder nur für PP.ReplaceText := 'Hallo ' +Request.ContentFields.Values['FirstName'] + ', Guten Tag' ?

Danke

Alexander
Alexander Lang
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz