ページ プロデューサの連鎖

提供: RAD Studio
移動先: 案内検索

ページ プロデューサ コンポーネントの使用 への移動


HTTPProd.OnHTMLTag イベント ハンドラから返される置換用テキストは、HTTP 応答メッセージで使用する最終的な HTML シーケンスである必要はありません。複数のページ プロデューサを使用し、1 つのページ プロデューサの出力を次のページ プロデューサの入力にすることができます。

複数のページ プロデューサを連鎖させる最も簡単な方法は、各ページ プロデューサを別々のアクション項目と関連付ける方法です。その際、すべてのアクション項目の PathInfoMethodType は同じにします。最初のアクション項目では、自身のコンテンツ プロデューサから Web 応答メッセージのコンテンツを設定しますが、OnAction イベント ハンドラではメッセージが処理済みと見なされないように(Handled パラメータを False に)します。その後のアクション項目では、それぞれに関連付けられたプロデューサの ContentFromString メソッドを使用して、Web 応答メッセージを操作します。2 番目以降のアクション項目では、次のような OnAction イベント ハンドラを使用します。

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);
}

たとえば、目的のページの年と月を指定した要求メッセージに対して、カレンダー ページを返すアプリケーションがあるとします。各カレンダー ページには、まず画像があり、その下に年と月の名前、その両側に前月と翌月の小さい画像、一番下に実際のカレンダーが含まれます。最終的に表示されるのは次のようなページです。

Calex.jpg

カレンダーの一般的な形式はテンプレート ファイルに格納されています。次のようなものです。

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

最初のページ プロデューサの OnHTMLTag イベント ハンドラは、要求メッセージから月と年を探します。その後、その情報とテンプレート ファイルを使用して、次の処理を行います。

  • <#MonthlyImage> を <#Image Month=January Year=2000> に置換する
  • <#TitleLine> を <#Calendar Month=December Year=1999 Size=Small> January 2000 <#Calendar Month=February Year=2000 Size=Small> に置換する
  • <#MainBody> を <#Calendar Month=January Year=2000 Size=Large> に置換する

次のページ プロデューサの OnHTMLTag イベント ハンドラでは、最初のページ プロデューサが作成したコンテンツを使用し、<#Image Month=January Year=2000> タグを適切な HTML <IMG> タグに置換します。さらに別のページ プロデューサが、#Calendar タグを適切な HTML テーブルに置換します。

関連項目