JSF Managed-Beanの定義・設定・使い方

2009/03/16 14:48Update
TAGS: JSF | Managed | Bean | Backing | JavaBean | MVC | モデル

JSF Managed-Beanは画面の入出力データを管理したり、ビジネスロジックを記述したりするJavaBeanです。本文は、JSF Managed-Beanの定義、JSPからのManaged-Bean利用方法、およびfaces-config.xmlでの設定の仕方などについて説明します。

JSF MVCモデル


JSFはMVCモデルを採用しています。
◇ M(モデル):Managed-Bean(JavaBean)
◇ V(ビュー):JSP
◇ C(コントローラ):FacesServlet

Managed-Beanの機能・特徴


◇ JSF MVCモデルのM(モデル)部分
◇ 画面(JSP)の表示データと画面からのパラメータの保持
  ・JSP/Managed-Beanプロパティのバイディング
◇ ビジネスロジック
  ・アクション
  ・イベント
  ・ビジネスロジック

Managed-Beanの作成例


JSFのManaged-Beanはあくまで普通のJavaBean、いわゆるPOJO(Plain Old Java Object)クラスです。

画面表示とパラメータを格納するためのプロパティ(およびそのgetter/setterメソッド)やビジネスロジックメソッドを定義するだけでよいのです。

例:
LoginBean.java
public class LoginBean {
    private String userId;    //ユーザID
    private String userPassword;    //パスワード

    //userIdを設定する
    public void setUserId(String userId) {
        this.userId = userId;
    }

    //userIdを取得する
    public String getUserId() {
        return userId;
    }

    //userPasswordを設定する
    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }

    //userPasswordを取得する
    public String getUserPassword() {
        return userPassword;
    }


    //ログイン処理 
    public String doLogin() {//voidでもよい。voidの場合、自画面に戻る
        //TODO ビジネスロジックここで記述

        return "login";    //戻り値(遷移先)。nullや""と戻される場合、自画面に戻る
    }
}

※LoginBeanクラスを見ればわかると思います。JSF独自のコード何も書かれていません。
※ここでのプロパティuserIdやuserPasswordはJSPのJSFのUIコンポーネントとバインド(Value Binding)することができます。もちろん、JSPと関係のないプロパティを書くこともできます。

ちなみに、LoginBeanとバインドするJSPは以下のような形になります。
login.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<html>
<head>
<title>ログイン</title>
</head>
<body>

<h1>ログイン</h1>
<hr />

<f:view>
    <h:form>
    ユーザID:<h:inputText id="userId" value="#{LoginBean.userId}" />
    <br/>
    パスワード:<h:inputText id="userId" value="#{LoginBean.userPassword}" />
    <br/>
        <h:commandButton id="login" action="#{LoginBean.doLogin}" value="ログイン" />
    </h:form>
</f:view>

</body>
</html>

※LoginBeanはManaged Beanで、Managed Beanを利用するためには、faces-config.xmlにその旨の設定を記述する必要があります。
faces-config.xml
<?xml version="1.0"?>

<!DOCTYPE faces-config PUBLIC
  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<faces-config>
    <managed-bean>
        <managed-bean-name>LoginBean</managed-bean-name>
        <managed-bean-class>com.syboos.LoginBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
</faces-config>

1)managed-bean-name要素にManaged Beanの名前を記述します。ここで記述した名前をJSPから引用できます。
2)managed-bean-class要素にManaged Beanのフルネームのクラス名を記述します。
3)managed-bean-scope要素はManaged Beanのライフサイクルを示します。applicationやsession、requestなどの内容を入ります。
faces-config.xmlの詳細について、他の記事で詳しく紹介したいと思います。

※以上のような記述で、ログインボタンを押下時、LoginBeanのdoLogin()メソッドが呼ばれ、ユーザは入力した「ユーザID」がLoginBeanのuserIdプロパティに、「パスワード」がLoginBeanのuserPasswordに自動的にセットされます。

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments