Für die Nachwelt...
Die
Web.HTTPApp.TWebModule
besitzen die Eigenschaft
Web.HTTPApp.TCustomWebDispatcher.Actions
_
die wiederum die Eigenschaft
Web.HTTPApp.TWebActionItem.Producer
und
Web.HTTPApp.TWebActionItem.ProducerContent
.
Weist man dann einem der zwei im Objektinspektor den TPageProducer zu und ruft die
Web.HTTPApp.TCustomWebDispatcher.Actions
wie hier unten auf:
Delphi-Quellcode:
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;
kommt es zu dem von mir geschilderten Verhalten. Das oben gezeigte funktioniert nur richtig, also ohne doppelten Aufruf,
wenn im "Producer" und "ProducerContet" der Action nichts zugewiesen wurde! Falls doch, muss der Handler der Action wie folgt
aussehen:
Delphi-Quellcode:
procedure TWebModuleMain.WebModuleMainDefaultHandlerAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
Response.SendResponse;
end;
Vergessen darf man dann nicht, falls Templates dynamisch geladen werden sollen, die Templates z.B. im
Web.HTTPApp.TWebModule.BeforeDispatch
zu laden
PP.HTMLFile := 'C:\Template.html';
.
Die "BeforeDispatch" Ereignisbehandlungsroutine führt eine Vorverarbeitung durch bevor es zu der/den Action/s geht.
Mehr siehe Hilfe unter:
Zitat:
ms-help://embarcadero.rs_xe2/
rad/Web_Broker_verwenden_-_Index.html
Alexander
PS: So ein Sche** ich fass es nicht