Click frameworkのPageクラス(続き)
2858 ワード
まず、新しいPageインスタンスを作成し、Pageのプロパティ(context,format,headers,path)を設定する.要求パラメータの値をPageのpublicフィールドにバインドします.
次に、onSecurityCheck()プロセッサを実行し、ユーザが現在のページにアクセスできるかどうかを検証し、ビジネス上必要であれば後続の処理を中断することができる.
その後の方法はonInit()で、ここで初期化コードを置くことができます.onInit()は、コントロール(フォーム、フィールド、テーブル)を生成するのに最適な場所です.グラフに示すように、PageのonInit()メソッドが呼び出されると、このフェーズで使用可能なコントロールのonInit()メソッドが呼び出されます.
次はPageに含まれるコントロールについての処理です.ClickSellvetはPageからコントロールリストを取得し、コントロールのonProcess()メソッドを巡回します.
falseを返すonProcess()メソッドが存在する場合、後のコントロールの処理とPageのonGe()メソッドの実行が中断されます.
すべてのonProcess()が正常に実行された場合、PageのonGet()メソッドが呼び出されます.
その後、ページテンプレートを表示可能なHtmlに翻訳し、ClickServiceletはPageからmodelペア(Map)を取得し、次のオブジェクトをmodelに追加します.
1任意のpublicタイプのPageに含まれるフィールド
2 context-サーブレットのコンテキストパス、例:/myapp
3 cssImports-pageのヘッダーに含まれるCSSインポートファイルおよびスタイルブロック.PageImportsを参照すると、より詳細な情報が得られます.
4 format-Format対像表示用オブジェクト
5 imports-ページのヘッダにCSSとJavaScriptファイルを含めます.詳細については、PageImportsを参照してください.
6 jsImports-JavaScriptインポートファイルとscriptブロックをページの末尾に含めます.詳細については、PageImportsを参照してください.
7 messages-PageのgetMessage()メソッドのアダプタ
8 path-ページテンプレートを表示するパス
9 request-ページのHttpServiceletRequestオブジェクト
10 response-ページのHttpServeretResponseオブジェクト
11 session-ユーザーHttpSessionアダプタ
プログラムはテンプレートとページモデルを結合し,結果をHttpServeretResponseに出力する.テンプレートと
モデルが結合されると、モデル内のすべてのコントロールは、それぞれのtoString()メソッドを使用してコントロール自体を表示します.
プロセスの最後のステップは、コントロールを実行するonDestroy()メソッドとPageのonDestroy()メソッドです.
この方法は、ごみの回収前にリソースとコントロールとPageとの連絡をクリアするために使用されます.
異常放出があってもonDestroy()が実行されることを確認します.
POST要求に対する実行フローは、onGet()の代わりにonPost()を用いる以外は、上述したようなものである.
Page実行プロセスについては、次のように説明します.
[img] http://www.iteye.com/upload/attachment/35701/6cf29732-05a2-333e-b66c-79946f21ab48.png[/img]
Request Param Auto Binding要求パラメータ自動バインド
ClickはパラメータをPageのフィールドに自動的にバインドし、これらの値をバインドすると、それらもバインドします.
適切なタイプに変換します.
この点を理解する最善の方法は、一例を通じてです.プログラムがリクエストを受信したとします.
http://localhost:8080/mycorp/customer-details.htm?customerId=7203
このリクエストは自動的にCustomerDetails Pageにバインドされます
CustomerDetails pageが作成されると、「7023」はIntegerタイプに変換されます.
pageのpublicタイプのフィールドcustomerIdに値を付けます.
Clickのもう一つの特徴は、publicタイプのフィールドがpageに自動的にバインドされることです.
モデルオブジェクト上.これにより、pageテンプレートが表示されるときにこれらの値が使用可能になります.私たちの例では
publicタイプのcustomerIdはPageのmodelに自動的に追加され、pageテンプレートに
レンダリング時に使用できます.
customer-details.htmは
リクエストが終了すると、私たちのページは次のように表示されます.
参照
Customer ID: 7203
次に、onSecurityCheck()プロセッサを実行し、ユーザが現在のページにアクセスできるかどうかを検証し、ビジネス上必要であれば後続の処理を中断することができる.
その後の方法はonInit()で、ここで初期化コードを置くことができます.onInit()は、コントロール(フォーム、フィールド、テーブル)を生成するのに最適な場所です.グラフに示すように、PageのonInit()メソッドが呼び出されると、このフェーズで使用可能なコントロールのonInit()メソッドが呼び出されます.
次はPageに含まれるコントロールについての処理です.ClickSellvetはPageからコントロールリストを取得し、コントロールのonProcess()メソッドを巡回します.
falseを返すonProcess()メソッドが存在する場合、後のコントロールの処理とPageのonGe()メソッドの実行が中断されます.
すべてのonProcess()が正常に実行された場合、PageのonGet()メソッドが呼び出されます.
その後、ページテンプレートを表示可能なHtmlに翻訳し、ClickServiceletはPageからmodelペア(Map)を取得し、次のオブジェクトをmodelに追加します.
1任意のpublicタイプのPageに含まれるフィールド
2 context-サーブレットのコンテキストパス、例:/myapp
3 cssImports-pageのヘッダーに含まれるCSSインポートファイルおよびスタイルブロック.PageImportsを参照すると、より詳細な情報が得られます.
4 format-Format対像表示用オブジェクト
5 imports-ページのヘッダにCSSとJavaScriptファイルを含めます.詳細については、PageImportsを参照してください.
6 jsImports-JavaScriptインポートファイルとscriptブロックをページの末尾に含めます.詳細については、PageImportsを参照してください.
7 messages-PageのgetMessage()メソッドのアダプタ
8 path-ページテンプレートを表示するパス
9 request-ページのHttpServiceletRequestオブジェクト
10 response-ページのHttpServeretResponseオブジェクト
11 session-ユーザーHttpSessionアダプタ
プログラムはテンプレートとページモデルを結合し,結果をHttpServeretResponseに出力する.テンプレートと
モデルが結合されると、モデル内のすべてのコントロールは、それぞれのtoString()メソッドを使用してコントロール自体を表示します.
プロセスの最後のステップは、コントロールを実行するonDestroy()メソッドとPageのonDestroy()メソッドです.
この方法は、ごみの回収前にリソースとコントロールとPageとの連絡をクリアするために使用されます.
異常放出があってもonDestroy()が実行されることを確認します.
POST要求に対する実行フローは、onGet()の代わりにonPost()を用いる以外は、上述したようなものである.
Page実行プロセスについては、次のように説明します.
[img] http://www.iteye.com/upload/attachment/35701/6cf29732-05a2-333e-b66c-79946f21ab48.png[/img]
Request Param Auto Binding要求パラメータ自動バインド
ClickはパラメータをPageのフィールドに自動的にバインドし、これらの値をバインドすると、それらもバインドします.
適切なタイプに変換します.
この点を理解する最善の方法は、一例を通じてです.プログラムがリクエストを受信したとします.
http://localhost:8080/mycorp/customer-details.htm?customerId=7203
このリクエストは自動的にCustomerDetails Pageにバインドされます
package com.mycorp.page;
public class CustomerDetails extends Page {
public Integer customerId;
}
CustomerDetails pageが作成されると、「7023」はIntegerタイプに変換されます.
pageのpublicタイプのフィールドcustomerIdに値を付けます.
Clickのもう一つの特徴は、publicタイプのフィールドがpageに自動的にバインドされることです.
モデルオブジェクト上.これにより、pageテンプレートが表示されるときにこれらの値が使用可能になります.私たちの例では
publicタイプのcustomerIdはPageのmodelに自動的に追加され、pageテンプレートに
レンダリング時に使用できます.
customer-details.htmは
<html>
<body>
Customer ID: $customerId
</body>
</html>
リクエストが終了すると、私たちのページは次のように表示されます.
参照
Customer ID: 7203