Webcoordinatorアプリケーションの表示の処理の流れを“A.1 簡単なサンプル”のサンプルに従って説明します。
制御ページmain.jspを指定してアプリケーションを起動すると、uji:dispatchタグからWebcoordinatorを起動します。Webcoordinatorはコマンドマップcommands.mapの以下の記述を参照して、最初に呼ぶメソッドを決めます。
;=sample.SampleHandler.startup
これで指定されたSampleHandlerクラスのstartupメソッドが呼ばれます。
表示のためにビジネスクラスのメソッドで必要な処理は以下です。
表示用のデータをデータBeanに設定する。
データBeanにsetVerbメソッドで表示モードを設定する。
各領域に対して、DispatchContextクラスのsetResponseBeanメソッドで表示用のデータを持つデータBeanを設定する。
サンプルでは以下の処理となっています。
public void startup(DispatchContext context) { BodyBean dataBean = new BodyBean(); dataBean.setVerb("reqmode"); context.setResponseBean("body", dataBean); setHead(context); } private HeadBean headBean; private void setHead(DispatchContext context) { if(headBean == null) { headBean = new HeadBean(); headBean.setLoginTime(new java.util.Date()); } headBean.setCount(headBean.getCount() + 1); context.setResponseBean("head", headBean); }
サンプルの例では、BodyBeanを作成して、body領域に対応付けて設定しています。また、setHeadメソッドの中で、HeadBeanを作成し、loginTimeとcountを設定し、head領域に対応付けて設定しています。ここまでの処理を実行したところで、uji:dispatchタグの処理は終了し、制御ページに戻ります。この時の設定状態を確認すると、以下のようになっています。
領域名 | データBeanのクラス | 表示モード | データBeanの内容 |
---|---|---|---|
head | HeadBean | なし | count、loginTimeを設定 |
body | BodyBean | reqmode | 初期値 |
制御ページmain.jspに戻ったあと、uji:includeタグで再度Webcoordinatorが起動します。
<uji:include pane="head" />
領域名をpane="head"と指定していますので、Webcoordinatorはheadの設定情報を探します。この例ではHeadBeanが設定されています。次にWebcoordinatorは、入出力画面の決定のためにページマップpages.mapを参照します。先ほどの設定情報では、headに対応付けられたデータBeanは、HeadBeanクラスで表示モードなしでした。ページマップ中でこれに一致する行があり、header.jspが入出力ページ名となります。
sample.HeadBean;=header.jsp
以上の結果より、この領域にheader.jspを表示します。
もう一つのuji:includeタグでも同様に、body領域BodyBeanで表示モードがreqmodeという設定から、request.jspが表示されます。ページマップの記述方法の詳細は、“UJIタグリファレンス”を参照してください。
次にheader.jspの中を説明します。
<uji:useBean id="head" cls="sample.HeadBean" request="true" /> 実行回数は <uji:getProperty bean="head" property="count" /> 回です。
uji:useBeanタグはhead領域に対応付けたHeadBeanをJSP上でheadという変数名で使用可能にする宣言です。request="true"の記述は、次のリクエストまでWebcoordinatorで保持する指定です。この宣言後、uji:getPropertyタグで変数名headとプロパティ名countを指定することで、countの設定内容が表示可能になります。同様にloginTimeも表示しています。
request.jspの中ではbody領域に対応付けたBodyBeanをJSP上でbodyという変数名で宣言しています。JSP変数としては使っていませんが、request="true"の指定で次のリクエストまでWebcoordinatorで保持するようにしています。