Webcoordinatorアプリケーションの入力の処理の流れを“A.1 簡単なサンプル”のサンプルに従って説明します。
request.jspのフォームで加算の送信ボタンが押されたとします。この時、次のようなパラメタを持つHTTPリクエストがサーバーに送信されます。
uji.verbs="add,sub" uji.id="body" val1="4" val2="6" add="加算"
FORMタグのactionが省略されているので、これはこの画面の表示の元になったmain.jspに対して送信されます。このリクエストは、main.jspが受け取り、uji:dispatchタグでWebcoordinatorに渡されます。
uji.verbsは、リクエストの中でコマンドとして実行されうるボタン名の一覧を指定しています。この例ではこのフォームからはaddとsubが指定可能になっています。実際addがコマンドとしてリクエストに付加されています。
uji.idは、データを持つ領域名を表しています。表示のときに、body領域にBodyBeanを設定していますので、これが利用されます。
val1とval2が通常の入力項目です。BodyBeanのsetVal1メソッドとsetVal2メソッドがこれを受け取ります。Webcoordinatorは、String、boolean、byte、char、int、long、float、double、BigDecimal、BigIntegerの各型を判定して自動変換します。自動変換できない場合は、初期値(null、ゼロ)が設定されます。
次に、Webcoordinatorは、ビジネスクラス決定のためにコマンドマップcommands.mapを参照します。
sample.BodyBean;add=sample.SampleHandler.add
入力のデータBeanがBodyBeanで、コマンドがaddであるため、コマンドマップよりSampleHandler.addがメソッド名として取得されます。これに従って、SampleHandlerクラスがロードまたは再利用され、addメソッドが呼ばれます。コマンドマップの詳細については“3.6.1 コマンドマップ”を参照してください。
addメソッドのパラメタには、Webcoordinatorへのアクセスを提供するDispatchContextと、入力のデータBeanが渡されます。
public void add(DispatchContext context, BodyBean dataBean) { .... }
最初にアプリケーションが起動した時には、フォーム入力はありません。そのため、HTTPリクエストのパラメタは何も付いていません。この場合は、データBeanへの転送はスキップして、コマンドマップを参照します。コマンドマップの中で、データBean名、コマンドとも空の行を探し、SampleHandler.startupが呼ばれます。