ページの先頭行へ戻る
 Apcoordinatorユーザーズガイド

16.6 ウィンドウの制御

ウィンドウ制御機能を使うと、サブウィンドウを利用したアプリケーションの作成が容易になります。例えば、以下のようなアプリケーションが実現できます。

以降の説明では、「メインウィンドウ」「サブウィンドウ」という用語を次の意味で使用します。

ウィンドウの表示を制御するには、以下のクラスとUJIタグを使用します。

JSPの作成

サブウィンドウを利用したアプリケーションでは画面を次のように作成します。

ウィンドウ制御機能を使用する場合、画面の更新を行うためにはリクエストをJSP(制御ページ)で受け取るようにアプリケーションを作成してください。リクエストをサーブレットで受け取り、レスポンスとして画面(JSP)を返した場合、ウィンドウ制御機能は使用できません。

表示の制御

ビジネスクラスでは、WindowクラスとWindowControllerクラスを使用して、次のようにプログラムを作成します。

ビジネスクラス作成時は、以下の点に注意してください。

Windowクラスのオブジェクトは、セションが終了するまで有効です。したがって、これらをビジネスクラスの変数に一旦保存しておき、あとでビジネスクラスが呼び出された時に利用することができます。以下の記述例を参照してください。

    import com.fujitsu.uji.http.Window;
    import com.fujitsu.uji.http.WindowController;
    import com.fujitsu.uji.http.HttpDispatchContext;

    ...

    // サブウィンドウのWindowオブジェクトを保存する変数
    Window subWin = null;

    public boolean init() {
       // このビジネスクラスをセションスコープに指定する
       return true;
    }

    // 初回アクセス時に呼び出されるメソッド
    public void startup(DispatchContext context) {

        WindowController wCtrl = 
            ((HttpDispatchContext)context).getWindowController();

        // サブウィンドウのWindowオブジェクトを作成して変数に保存
        subWin = wCtrl.createWindow("subWindow");
        ...
    }

    // サブウィンドウを開くメソッド
    public void openSubWindow(DispatchContext context, MyDataBean dataBean) {
        subWin.open("sub.jsp","resizable=yes,width=300,height=300");
        context.setResponseBean("subBody",new SubDataBean(),true);
        ...        
    }

    // サブウィンドウを閉じるメソッド
    public void closeSubWindow(DispatchContext context, MyDataBean dataBean) {
        subWin.close();
        ...        
    }

リクエストの検証

サブウィンドウを使用したアプリケーションでも、HttpControlStateProfileクラスとuji:controlStateタグを使用することにより、リクエストを検証することができます。リクエストの検証については、“17.1.8 リクエストの検証”を参照してください。

サブウィンドウを使用したアプリケーションの場合は、ウィンドウに表示されるフォームそれぞれにuji:controlStateタグを記述します。正当性はウィンドウごとに検査されます。それぞれのウィンドウにおいて、最後に表示された画面からのリクエストが「正当な」リクエストとして扱われます。

ウィンドウ制御機能使用時の注意事項

ウィンドウ制御機能を使用する場合は、以下の注意事項があります。