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

F.3.4 1つ前の画面に戻る処理を実現したい

1つ前の画面を表示させる処理は1つ前の画面で使用したデータBeanを領域に割り当てることで実現できます。通常、領域にデータBeanを割り当てるにはcom.fujitsu.uji.DispatchContextクラスのsetResponseBeanメソッドを使用しますが、com.fujitsu.uji.http.HttpDispatchContextクラスのpopBeanBackupメソッドを使用すると以前に使用したデータBeanを簡単に再割り当てできます。

画面に「戻る」ボタンを作成し、そのボタンが押されると前の画面に戻るアプリケーションを例に説明します。このアプリケーションで、popBeanBackupメソッドを使用して以下の図のような画面遷移が実現できます。

画面Aの次に画面Bが表示され、画面Bに設置した「戻る」ボタンを押すと画面Aに戻るという遷移です。

画面Aを表示させるために、ビジネスクラスではMenuBeanクラスを領域に割り当てるとします(図の(X)のメソッド)。この処理は以下のような記述になります。

        public void startup(DispatchContext context) {
                MenuBean menuBean = new MenuBean();
               ....
                context.setResponseBean("body",menuBean);
        }

同様に、画面Bを表示させるために、ビジネスクラスでInputBeanを領域に割り当てるとします(図の(Y)のメソッド)。

        public void input(DispatchContext context, MenuBean dataBean) {
                InputBean inputBean = new InputBean();
                ....
                context.setResponseBean("body",inputBean);
        }

図の(Z)のメソッドで、以下のようにpopBeanBackup(1)を実行することにより、画面Aが再び表示されます。

        public void back(DispatchContext context, InputBean dataBean) {
                 ((HttpDispatchContext)context).popBeanBackup(1);
        }

Apcoordinatorは領域に割り当てられたデータBeanを保存するためのスタックを持っており、リクエストごとにデータBeanを保存しています。popBeanBackupメソッドはスタックに保存されたデータBeanを取り出して領域に再割り当てします。

popBeanBackupの引数には、スタックから捨てる画面の数を指定します。上記図の(Z)の時点では、スタックに保存されているデータBeanは以下の図のようになっています。

popBeanBackupの引数に1を指定すると、スタックの先頭にある画面B用のデータBeanが捨てられ、画面A用のデータBeanが領域に割り当てられます。その結果、画面Aが表示されます。仮にpopBeanBackupの引数に0を指定したとすると、スタックから何も捨てられないため、画面Bが表示されることになります。

スタックのサイズはデフォルトで5です。この値を変更する方法については“13.3 初期化パラメタ”を参照してください。保存されている画面の数がこの指定を超えると、古いものから順に消去されます。

注意

スタックにはデータBeanのコピーが保存されるのではなく、データBeanそのものが保存されます。したがって、データBeanの中のデータを書き換えた場合には、popBeanBackupメソッドを使って戻した画面には書き換えられたデータが表示されます。

関連項目