Web.HTTPApp.TCustomWebDispatcher.DispatchAction
Delphi
function DispatchAction(Request: TWebRequest;
Response: TWebResponse): Boolean;
C++
bool __fastcall DispatchAction(TWebRequest* Request, TWebResponse* Response);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
function | protected | Web.HTTPApp.pas Web.HTTPApp.hpp |
Web.HTTPApp | TCustomWebDispatcher |
説明
HTTP リクエストメッセージが処理されるまで Actions 内のアクション項目にリクエストメッセージを渡します。
Web アプリケーションは HTTP リクエストメッセージを受信したときに DispatchAction を呼び出すので,ディスパッチャはレスポンスが生成可能なアクション項目にリクエストをディスパッチできます。
DispatchAction は,Request パラメータで表される HTTP リクエストメッセージを処理するアクション項目を探す前に BeforeDispatch イベントを生成します。BeforeDispatch イベントハンドラがアクションを処理する場合,ディスパッチャはどのアクション項目にもリクエストメッセージを渡しません。
BeforeDispatch イベントハンドラがない場合,または BeforeDispatch イベントハンドラがリクエストを処理しない場合,DispatchAction はリクエストの MethodType および PathInfo と Actions プロパティ内の各アクション項目の MethodType および PathInfo プロパティを照合します。アクション項目がリクエストの MethodType および PathInfo と一致した場合,DispatchAction は OnAction イベントハンドラを呼び出します。
OnAction イベントハンドラはリクエストに対するレスポンス処理を完了させることができます。また,リクエストが完全に処理されていないことを示して,別のアクション項目でそのリクエストの処理を完了させることもできます。OnAction イベントハンドラがリクエストを完了しないと,DispatchAction は Actions プロパティ内のアクション項目を調べ,一致する項目が見つかったときに OnAction イベントハンドラを呼び出すという処理を繰り返します。
すべてのアクション項目が調べられたにもかかわらずリクエストが完全に処理されない場合,DispatchAction はデフォルトのアクション項目の OnAction イベントハンドラを呼び出します。
BeforeDispatch イベントハンドラまたはアクション項目がリクエストを処理した場合,DispatchAction は AfterDispatch イベントを生成します。BeforeDispatch イベントまたはアクション項目がすでにレスポンスを送信している場合には,AfterDispatch イベントは発生しません。
DispatchAction は論理値を返して,Web アプリケーションが未送信のレスポンスメッセージを送信すべきかどうかを示します。アクション項目がアクションを処理し,AfterDispatch イベントハンドラが Handled パラメータを false に変更しなかった場合には,DispatchAction は true を返します。