ManagedBeanを作成する
ManagedBeanは、JavaEEコンテナで管理されるクラスです。このクラスはアノテーションで設定するのを除いては、通常のJavaクラスと同様に実装することができます。具体的には変数と変数へのアクセスを行うsetメソッドとgetメソッド、そして入力チェックや変数の加工処理などを、通常のJavaクラスでの記述と同じように記述できます。では実際にManagedBeanを作成してみましょう。
SampleWebAppのソースパッケージにて、sample.beansパッケージを作成し、その中にManagedBeanを作成します。sample.beansパッケージの上で右クリックをし、[新規]-[JSF管理対象Bean]を選択します。
作成内容を聞かれるので、図6のように「クラス名」と「名前」、「スコープ」の3つを選択します。
今回は、以下に示す内容で作成します。
| 項目 | 設定内容 |
| クラス名 | SampleManagedBean |
| 参照時名称 | user |
| スコープ | session |
入力し終えたら[完了]を押します。するとManagedBeanが作成されます。作成されたManagedBeanには、先ほど設定した参照時名称を定義する@Namedアノテーション、そしてスコープを定義するアノテーション(このサンプルでは@SessionScoped)が出力されています。ちなみに@Namedで宣言されたクラスは冒頭でも触れましたようにCDI管理のBeanで、JSF管理対象Beanとは区別されることが多いです。しかしNetBeans6.9ではこれらをあまり区別せずにJSF管理対象Beanとして扱います。
作成したManagedBeanは以下のようになります。
package sample.beans;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
@Named(value="user") …①
@SessionScoped …②
public class SampleManagedBean {
/** Creates a new instance of SampleManagedBean */
public SampleManagedBean() {
}
}
1、2ともManagedBean作成時に選択できるアノテーションです。この2つを定義することで、GlassFishへの登録を自動的に行い、Faceletsから参照できるようになります。
1のNamedアノテーションでは、value属性でJSFがこのManagedBeanを参照するときの名称を定義します。2では、ManagedBeanのスコープを定義します。先ほどのManagedBean作成のところで選択したスコープが表示されます。今回はsession(ブラウザが終了するまで有効)を選びました。他にもスコープには、request(1回画面を表示するまで有効)、application(アプリケーション全体で1つのみ)、dependent(ManagedBeanの内容を表示している画面が有効な間のみ持ち続ける。同じ画面を表示している限り有効になるので、1画面内のsessionのような使われ方をする)がよく使われます。
これで雛形は完成しました。


