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

21.1 データBeanの指定について

画面のデータを受け取るデータBeanをJSPで指定する場合、uji.idリクエストパラメタを使う方法とuji.beanリクエストパラメタを使う方法があります。アプリケーションによって適当な方法で指定する必要があります。

<uji:useBean id="body" cls="sample.BodyBean" request="true" />
<FORM method="post">
    <INPUT name="uji.id" type="hidden" value="body">
    <INPUT name="uji.bean" type="hidden" value="sample.BodyBean">
    ....
</FORM>
uji.id

uji.idは、DispatchContextクラスのsetResponseBeanメソッドで設定され、サーバで保持しているデータBeanに対してデータを設定します。

以下の利点があります。

  • 既存のデータBeanを使用するため、余分な処理が不要になり、アプリケーションの効率を上げることができます。

  • 画面部品を利用する複雑な構造のデータBeanに対しても、データの設定ができます。

以下の注意事項があります。

  • タイムアウトやブラウザの戻るボタン使用時に、サーバで保持されているデータBeanと画面との対応が取れなくなる場合があります。戻るボタンを使用すると、サーバで保持されるデータBeanの型と画面のボタン名でコマンドマップを参照するため、意図したビジネスクラスが呼ばれない場合があります。

  • uji:useBeanタグで、request="false"と指定すると、サーバで保持しているデータBeanを削除します。request="true"と指定する必要があります。

uji.bean

uji.beanは、HTTPリクエストに対して毎回データBeanを生成します。

以下の利点があります。

  • リクエストごとにデータBeanを生成するため、タイムアウトやブラウザの戻るボタンに対しても動作可能です。

以下の注意事項があります。

  • データBeanの内部に別のクラスがある場合、データBeanのコンストラクタで全て生成する必要があります。また、画面部品を利用する場合は繰り返し数を合わせてクラスを生成する必要があります。項目クラスのインタフェース(ComboBoxModelやTableViewModelなど)を実装するクラスでは、その内部にあるクラスについてもコンストラクタで生成する必要があります。

  • 画面部品のクラス(TableModelやListModelを実装するクラス)で、値としてString以外のクラスを持つものは使用できません。

uji.idとuji.beanの併用

uji.idとuji.beanを両方指定した場合、まずサーバで保持しているデータBeanを探し、それがuji.beanで指定したクラスと一致していれば、そのデータBeanを使用します。サーバで保持しているデータBeanがなければ、データBeanを生成します。

以下の利点があります。

  • サーバで保持しているデータBeanが利用可能な場合には、uji.idの利点が有効になります。

  • タイムアウトやブラウザの戻るボタンに対しても動作可能です。

以下の注意事項があります。

  • リクエスト時にデータBeanが生成される場合、uji.beanの注意事項が当てはまります。