各コンポーネントのバインディング設定の前に、JSF設定ファイル(faces-config.xml)を編集して、必要なマネージドBeanの登録を行います。アプリケーション・ナビゲータに表示されているfaces-config.xmlをエディタ画面に表示したら、下部にある「概要」タブを選択し、左上のリストから「Managed Bean」を選択してマネージドBeans編集画面に切り替えます(図2)。
図2:マネージドBeans編集画面 (画像をクリックすると別ウィンドウに拡大図を表示します)
次に「新規」をクリックし、「マネージドBeanの作成」ダイアログを表示します。「名前」にはJSFページ変数名、「クラス」にはJSFに生成させるクラスの名前を、そして「有効範囲」にはマネージドBeanインスタンスの有効な期間(スコープ)を指定します。
まず、UserInfoクラスを登録し、1回のセッションの間だけ有効なインスタンスをuserInfoというJSFページ変数から参照できるようにします。ダイアログへの入力値は、図3のようになります。
図3:UserInfoクラスの登録
入力が終わったら、「OK」ボタンをクリックして登録を完了します。同様に、残りの2つのクラスもマネージドBeanとして登録します(表2)。
JSFページ変数名 |
クラス名 |
スコープ |
userInfo |
to.msn.wings.jsf.model.UserInfo |
session |
fortuneTeller |
to.msn.wings.jsf.FortuneTeller |
application |
fortuneTellingService |
to.msn.wings.jsf.view.FortuneTellingService |
request |
表2:マネージドBean として登録するクラスの一覧
以上の手順が完了すると、図4のようになります。
図4:マネージドBeanとして登録された3つのクラス
続いて、マネージドプロパティの設定を行います。まず「Managed Bean」セクションからfortuneTellingServiceを選択し、次に「管理プロパティ」セクションの横にある三角形をクリックしマネージドプロパティの一覧を表示させます。それから同セクションのペインにある「新規」ボタンをクリックします。
「管理プロパティの作成」ダイアログが表示されるので、ここにマネージするプロパティの名前、プロパティの型を入力していきます(図5)。
図5:マネージドプロパティの記述
ここで追加が必要なマネージドプロパティを表3に示します。
プロパティ名 |
クラス名 |
値 |
userInfo |
to.msn.wings.jsf.model.UserInfo |
#{userInfo} |
fortuneTeller |
to.msn.wings.jsf.FortuneTeller |
#{fortuneTeller} |
表3:マネージドプロパティとして登録するプロパティの一覧
次に各プロパティに値を設定していきます。設定対象のプロパティを選択し(「Managed Bean」セクションではなく)「管理プロパティ」セクションの編集」ボタンをクリックすると「managed-propertyのプロパティ」ダイアログが開くので、ここで値を入力します(図6)。
図6:値バインディング式の記述
値としては文字列、数値のほか、値バインディング式を記述することができますので、それぞれ対応するマネージドBeanを参照する値バインディングを書いていきます。
ここで#{...}という見慣れない記述があることにお気づきだと思います。これをバインディング式といいます。このバインディング式は、JSF変数への参照をJSFタグの属性値として指定するための記述方法です。
#{JSF変数名.Beanプロパティ名}と記述することで、該当するJSF変数に格納されているBeanのプロパティ値が参照されます(バインディング式の文法の詳細については(第11回の「バインディング式の文法」の項を参照してください)。
マネージドプロパティの追加が終わると、図7のようになります。
図7:追加されたマネージドプロパティ (画像をクリックすると別ウィンドウに拡大図を表示します)
|