データBeanに表示モードを設定すると、同じクラスのデータBeanでも表示する入出力ページを切り替えることができます。
データBeanのクラスと表示モードの組に対し、表示する入出力ページのファイル名を指定します。この指定はページマップに記述します。
データBeanに表示モードを設定する処理をビジネスクラスのメソッドに追加します。
ページマップには、以下のようにエントリを追加して、データBeanクラスと表示モードの組に対し、表示する入出力ページのファイル名を定義します。
ページマップの記述例
... sample.ViewBean;summary=summaryView.jsp sample.ViewBean;detailed=detailedView.jsp ...
ViewBeanクラスのデータBeanで表示を行う場合、表示モードがsummaryならsummaryView.jspを、detailedならDetailedView.jspを表示します。
表示モードはcom.fujitsu.uji.DataBeanクラスのsetVerbメソッドで指定します。
ビジネスクラスのメソッドで表示モードを指定する例
public void startup(DispatchContext context) {
ViewBean view = new ViewBean();
...
view.setVerb("summary");
context.setResponseBean("body",view);
}
この例では、表示モードとしてsummaryを指定しています。summaryView.jspを使って画面が表示されます。
同様に表示モードを使用して、複数の画面での入力データを1つのデータBeanに格納することができます。
各画面の入力項目に対応付けるプロパティを全てまとめて1つのデータBeanクラスに作成します。
各画面を表示するために使用する表示モードを決めます。
ページマップにエントリを追加し、1で作成したデータBeanと2で決めた表示モードの組に対し、表示する入手力ページのファイル名を指定します。
データBeanに表示モードを設定する処理を、ビジネスクラスのメソッドに追加します。
以下は、2つの画面A, Bで同じデータBeanを使用し、画面A→画面Bの順に遷移する場合の記述例です。
データBeanの記述例
import com.fujitsu.uji.DataBean; public class InputBean extends DataBean { // 画面Aの入力項目に対応するプロパティ protected String userName = null; protected String address = null; .... // 画面Bの入力項目に対応するプロパティ protected String creditCard = null; protected String expired = null; .... }
画面A、画面Bで使用するプロパティを1つのデータBeanクラスにまとめて作成しています。(プロパティの値を設定、取得するためのメソッドの記載は省略しました。)
ページマップの記述例
... sample.InputBean;first=first.jsp sample.InputBean;second=second.jsp ...
この例は、画面Aの表示に表示モードfirstを、画面Bに表示モードsecondを使用する場合の記述です。
ビジネスクラスのメソッドで表示モードを指定する例
public void startup(DispatchContext context) { InputBean input = new InputBean(); ... input.setVerb("first"); context.setResponseBean("body",input); } public void next(DispatchContext context, InputBean dataBean) { ... dataBean.setVerb("second"); context.setResponseBean("body",dataBean); }
ブラウザからの初回のリクエストで呼ばれるメソッドstartupでは、表示モードfirstを指定しています。この結果、画面Aが表示されます。画面Aの「次へ」ボタンが押されたときに呼び出されるメソッドnextでは、表示モードとしてsecondを指定しています。その結果、画面Bが表示されます。メソッドnextでは、引数dataBeanに与えられたデータBeanインスタンスをsetResponseBeanメソッドで再び領域に割り当てています。そのため、画面A、画面Bで入力されたデータは同一のインスタンスに格納されます。
関連項目