Anforderungsbotschaften mit Aktionselementen beantworten
Nach oben zu Aktionselemente
Die Hauptarbeit der Web-Server-Anwendung wird von den Aktionselementen geleistet. Nachdem der Web-Dispatcher ein Aktionselement ausgelöst (d.h. aktiviert) hat, kann dieses auf zweierlei Arten auf die Anforderungsbotschaft antworten:
- Wenn in der Eigenschaft Producer des Aktionselements eine Generatorkomponente angegeben ist, weist dieser Generator automatisch mit seiner Content-Methode der Eigenschaft Content der Antwortbotschaft einen Wert zu. Die Kategorie Internet der Tool-Palette stellt String-Generatoren bereit, mit denen Sie eine HTML-Seite generieren können, welche den Inhalt der Antwortbotschaft bildet.
- Nachdem der Generator (falls vorhanden) einen Inhalt für die Antwortbotschaft erzeugt hat, empfängt das Aktionselement das Ereignis HTTPApp.OnAction. An die Ereignisbehandlungsroutine für OnAction wird das Web.HTTPApp.TWebRequest-Objekt übergeben, das die HTTP-Anforderungsbotschaft darstellt, und zusätzlich ein Web.HTTPApp.TWebResponse-Objekt, das mit den Antwortinformationen gefüllt wird.
Wenn der Inhalt für das Aktionselement von einem String-Generator erzeugt werden kann, reicht es aus, diesen in der Eigenschaft Producer des Aktionselements anzugeben. In der Ereignisbehandlungsroutine für OnAction kann allerdings auch auf andere String-Generatoren zugegriffen werden. Eine Ereignisbehandlungsroutine für OnAction bietet eine größere Flexibilität, da sie den Einsatz mehrerer String-Generatoren, das Setzen von Eigenschaften für Antwortbotschaften usw. ermöglicht.
In der Behandlungsroutine für OnAction können Sie alle Objekte bzw. Methoden der Laufzeitbibliothek einsetzen, um auf Anforderungsbotschaften zu antworten. Dies gilt auch bei Verwendung einer String-Generatorkomponente. Sie können auf Datenbanken zugreifen, Berechnungen ausführen, HTML-Dokumente erstellen oder auswählen usw. Weitere Informationen zum Erstellen des Antwortinhalts mithilfe von String-Generatoren finden Sie unter Den Inhalt von Antwortbotschaften generieren.
Die Antwort senden
Eine Ereignisbehandlungsroutine für OnAction kann zum Senden der Antwort an den Web-Client die Methoden des TWebResponse-Objekts einsetzen. Wenn kein Aktionselement eine Antwort an den Client schickt, übernimmt die Web-Server-Anwendung das Senden. Voraussetzung dafür ist aber, dass das letzte Aktionselement, dem die Anforderung vorgelegt wurde, anzeigt, dass sie bearbeitet worden ist.
Mehrere Aktionselemente verwenden
Sie können auf eine Anforderung innerhalb eines einzelnen Aktionselements antworten oder aber die Arbeit auf mehrere Aktionselemente verteilen. Wenn ein Aktionselement die Antwortbotschaft nicht vollständig bereitstellt, muss es dies in der Ereignisbehandlungsroutine für OnAction signalisieren. Dazu wird der Parameter Handled auf False gesetzt.
Wenn die Beantwortung von Anforderungsbotschaften auf mehrere Aktionselemente verteilt wird und jedes Element durch Setzen von Handled auf False anzeigt, dass ein anderes Element mit der Bearbeitung fortfahren kann, muss das Standard-Aktionselement den Parameter Handled auf True gesetzt lassen. Andernfalls wird keine Antwort an den Web-Client gesendet.
Wenn die Arbeit auf mehrere Aktionselemente verteilt wird, muss entweder die OnAction-Ereignisbehandlungsroutine für das Standard-Aktionselement oder die Behandlungsroutine für AfterDispatch des Dispatchers überprüfen, ob die Anforderung vollständig bearbeitet wurde, und bei Bedarf einen entsprechenden Fehlercode ausgeben.