JSF-ManagedBean?の作成

アプリケーションのWeb画面をJavaServer? Faces(JSF)で作成する。
Java ServletやJSP(JavaServer? Pages)を使用する方法もある。

後で作成するFaceletsの画面の表示内容や画面遷移に対応するデータやロジックをManagedBean?として作成し、サーバー内部で管理する。

ファイル→新規ファイルからManagedBean?を作成する。
プロジェクトに-warの名前のプロジェクトを選び、カテゴリ:JavaServer? FacesのJSF管理対象Beanを選択し、次へ。

#ref(): File not found: "mb1.gif" at page "JSF-ManagedBeanの作成"


クラス名を入力し、スコープにrequestを選び、終了をクリック。
スコープは重要であり、request:HTTPリクエストの範囲、session:HTTPセッションの範囲とManagedBean?の有効範囲が異なる。

#ref(): File not found: "mb2.gif" at page "JSF-ManagedBeanの作成"


ソースコードの型枠が生成される。
@Namedアノテーションでは、後で作成するFaceletsからこのManagedBean?にアクセスするための名称を指定している。
スコープにrequestを指定したため、@RequestScoped?アノテーションが付加され、コンテナにこのManagedBean?のスコープを指示している。

#ref(): File not found: "mb3.gif" at page "JSF-ManagedBeanの作成"


ManagedBean?のコードを入力する。

以前作成したSession Beanを使用する。
@EJBアノテーションをつけておくとコンテナによってインスタンスが注入される。

   @EJB
   private MessageBean messageBean;

画面の入出力項目に対応するフィールドを作成する。
getter/setterも必ず作成する。

   private String message = "";
   private List<Message> messages;

@PostConstruct?を付加したメソッドは、コンテナがオブジェクトを作成、使用準備が完了した後に呼び出される。
初期化にSession Beanの機能を使うときはコンストラクタが呼び出された時点では、EJBが注入されていないため、ここでSession Beanを使用した初期化を行う。

   @PostConstruct
   public void init() {
       messages = messageBean.readMessages();
   }

画面の遷移に対応したメソッドを作成する。
ここでもSession Beanの機能を利用している。
戻り値に遷移先のページ名を返す。(同じページに遷移する場合はvoidでもよい)

   public String writeMessage() {
       if (!"".equals(message)) {
           Message m = new Message();
           m.setMessage(message);
           m.setWritetime(new Date());
           messageBean.writeMessage(m);
           messages = messageBean.readMessages();
           message = "";
       }
       return "MessageBoard";
   }

コメント



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-06-28 (土) 01:50:10 (3584d)