corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

JSF フレームワーク入門

JavaServer Faces (JSF) フレームワークを使用して NetBeans IDE で Web アプリケーションをプログラミングする基本的な手順を学べるチュートリアルとしては、このドキュメントがシリーズではじめてとなります。チュートリアルのシリーズを通して、ユーザー名と誕生日を取得し、ユーザーの星座、誕生石、星占いなどの情報を返す jAstrologer という Web アプリケーションを作成します。

JavaServer Faces フレームワークは、Web アプリケーションのユーザーインタフェースコンポーネントを構築する標準 Java API です。JSF フレームワークは、Web アプリケーションですばやく簡単に再利用できる既成のコンポーネントが詰まった道具箱と考えられます。ここにあるコンポーネントは、ユーザーデータを取得して格納するテキスト入力フィールドのように単純なものから、ポップアップカレンダー付きの書式付きデータフィールドのように、より複雑なものまであります。コンポーネントは JSP ページに埋め込み、別々の JSP ページ間の移動を処理するためにフレームワークを使用します。

目次

このページの内容は NetBeans IDE 6.0/6.1 が対象です

このチュートリアルに従うには、次のソフトウェアとリソースが必要です。

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE Web および Java EE インストール版
version 6.1 または version 6.0
Java Development Kit (JDK) version 6 または version 5
GlassFish V2

注: GlassFish アプリケーションサーバーの V2 Update Release 1 は、NetBeans IDE の Web および Java EE インストール版にオプションで付属しています。

JSF フレームワークを使用した Web アプリケーションの作成

NetBeans IDE では、IDE で開いた既存 Web アプリケーションだけではなく、新規プロジェクト作成時の Web アプリケーションにも JSF サポートを追加できます。GlassFish サーバーは、JSF ライブラリがすでに含まれているため、これらをアプリケーションサーバーにダウンロードまたはインストールする必要はありません。この例では、新しい Web アプリケーションプロジェクトの作成中に JSF サポートを追加します。

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択し、「新規プロジェクト」ウィザードを開きます。「カテゴリ」の下の「Web」を選択し、「プロジェクト」の下の「Web アプリケーション」を選択します。「次へ」をクリックします。
  2. プロジェクトに「jAstrologer」と名前を付け、コンピュータ上のプロジェクトの場所を指定し、「次へ」をクリックします。
  3. ウィザードの手順 3 の「サーバーと設定」で、サーバーを「GlassFish V2」に設定し、 Java EE バージョンを「Java EE 5」に設定し、「次へ」をクリックします。
  4. 「JavaServer Faces」オプションを選択し、「完了」をクリックします。

IDE でアプリケーション全体のプロジェクトテンプレートが作成され、空の JSP ページ (welcomeJSF.jsp) がソースエディタに表示されます。新しいプロジェクトの論理構造が「プロジェクト」ウィンドウ (Ctrl-1) に表示されます。プロジェクトの「ライブラリ」>「GlassFish V2」ノードを展開します。jsf-impl.jar などの JSF ライブラリは、クラスパスに追加されます。「構成ファイル」を展開し、IDE によって faces-config.xml ファイルが作成されていることを確認します。このファイルでは、Web アプリケーションでの JSF コンポーネントの動作を制御します。また、IDE で Faces サーブレットが web.xml 配備記述子に登録されます。Faces サーブレットによって、JSF フレームワークで制御される JSP ページ間のページナビゲーションが処理されます。

「プロジェクト」ウィンドウに表示された新しい jAstrologer プロジェクト

JSP ページの作成

greeting.jsp という名前の新しい JSP ページを作成します。このページでは、ユーザーに挨拶のメッセージを表示してユーザー情報を収集します。次に、success.jsp ページを作成します。このページでは、フォームからデータを受信したことにこたえる応答メッセージを表示します。

挨拶ページの作成

  1. 「プロジェクト」ウィンドウでプロジェクトノードを右クリックし、「新規」>「JSP」を選択します。ファイルに「greeting」という名前を付けます。「JSP ファイル (標準構文)」オプションを必ず選択し、「完了」をクリックします。IDE によって新しい JSP ファイルが生成され、ソースエディタで開きます。また、ファイルが「プロジェクト」ウィンドウの「Web ページ」ノードに追加されています。
  2. ソースエディタで、JSF タグライブラリを greeting.jsp に宣言します。この操作は、次のコードをファイルの最初に追加することで実行します。
    <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
    <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
    コード補完用の IDE ビルトインサポートを使用できます。入力時に、Ctrl- スペースキーを押してコンテキストに基づく候補の一覧を表示できます。このようにコード補完は、タブライブラリの URI など、タグ名や属性の追加に役立ちます。
  3. title」タグと「h2」タグの両方の内容を「Welcome to jAstrologer」に変更します。
  4. 次は、JSF フォームをファイルに追加します。「パレット」ウィンドウ (Ctrl-Shift-8) で「JSF」カテゴリを展開します。パレットから項目をドラッグし、直接ソースエディタにドロップします。「JSF フォーム」ボタンをクリックし、項目を h2 タブの下の箇所にドラッグし、マウスボタンを離します。ダイアログの「空のフォーム」が選択されたままにし、「了解」をクリックします。IDE で次のコードが入力されます (ボールドで表示)。
    <h2>Welcome to jAstrologer</h2>
    
    <f:view>
        <h:form>
        </h:form>
    </f:view>
  5. inputText コンポーネントを使用してユーザー入力を取得し、commandButton コンポーネントを使用してフォームを送信できます。ソースエディタで、<h:form> タグの内容を次のように (ボールドの変更箇所) 変更します。
    <f:view>
        <h:form>
            <p>Enter your name: <h:inputText value="name" /></p>
            <p>Enter your birthday: <h:inputText value="birthday" /></p>
            <h:commandButton value="Submit" action="submit" />
        </h:form>
    </f:view>
    コードを整形するには、ソースエディタ内を右クリックし、「整形」(Alt-Shift-F) を選択します。

成功ページの作成

次に、単純に「Congratulations」と表示する JSP ページを作成します。

  1. 新しい JSP ファイルを前述のとおりに作成します。ファイルに「success」という名前を付けます。
  2. ファイルの内容を次のように変更します。
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Congratulations</title>
    </head>
    <body>
        <h2>Congratulations</h2>
    
        <p>You've successfully registered with jAstrologer.</p>
    </body>
    これまでのファイルに含まれるのはプレーン HTML のみのため、JSF タグライブラリを宣言する必要はまだありません。

ページナビゲーションの設定

JSF フレームワークのページナビゲーションは、faces-config.xml で制御されます。プロジェクト内の各 JSP ページについて、ナビゲーション規則を faces-config.xml に設定します。このファイルには、1 つまたは複数のナビゲーションケースが含まれます。ここで、簡単に送信アクションを commandButton から success.jsp にマップし、フィールドに何が入力されてもユーザーに成功メッセージが表示されるようにできます。

  1. 「プロジェクト」ウィンドウで、「faces-config.xml」をダブルクリックしてこのファイルをソースエディタで開きます。ファイルの上にあるツールバーで、「XML」をクリックしてファイルをプレーン XML で表示します。
  2. ファイル内の任意の場所を右クリックし、「Java ServerFaces」>「ナビゲーション規則を追加」を選択します。「遷移元ビューの規則」フィールドに「/greeting.jsp」と入力し、任意で規則の説明を入力します。

    サンプルデータが表示された「ナビゲーション規則を追加」ダイアログ


    「追加」をクリックします。次のコードが faces-config.xml に入力されます。
    <navigation-rule>
        <description>
            handle user input
        </description>
        <from-view-id>/greeting.jsp</from-view-id>
    </navigation-rule>
  3. 再度 faces-config.xml 内の任意の場所を右クリックし、「Java ServerFaces」>「ナビゲーションケースを追加」を選択します。表示されるダイアログで、次のとおりに設定します。
    • 「遷移元ビュー」: /greeting.jsp
    • 「遷移元結果」: submit
    • 「遷移先ビュー」: /success.jsp

    サンプルデータが表示された「ナビゲーションケースを追加」ダイアログ


    「追加」をクリックします。IDE によって次のコードが faces-config.xml に入力されます (ボールドの変更箇所)。
    <navigation-rule>
        <description>
            handle user input
        </description>
        <from-view-id>/greeting.jsp</from-view-id>
        <navigation-case>
            <from-outcome>submit</from-outcome>
            <to-view-id>/success.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>

アプリケーションの構成と実行

IDE を設定してアプリケーションの実行時に greeting.jsp が表示されるようにし、最後にアプリケーションをテストします。

  1. 「プロジェクト」ウィンドウでプロジェクトノードを右クリックし、「プロパティー」を選択します。
  2. 「実行」ノードをクリックし、「相対 URL」フィールドに「/faces/greeting.jsp」と入力します。これにより、アプリケーションの IDE でのエントリポイントを指定できます。「了解」をクリックします。
  3. プロジェクトノードを右クリックし、「実行」(F6) を選択します。IDE でプロジェクトが構築され、アプリケーションサーバーが起動してアプリケーションが配備され、次のページがデフォルトの外部ブラウザに表示されます。

    ブラウザに表示された greeting.jsp


    「Submit」ボタンをクリックすると、次のように表示されます。


    ブラウザに表示された success.jsp

バッキング Bean の接続

前の節で、JSF コンポーネントを使用して簡単な Web アプリケーションを作成しました。しかし、この Web アプリケーションには興味深い仕組みがまだ何もありません。豊富な機能を JSF Web アプリケーションに追加するため、UI コンポーネントをバッキング Bean と関連付けることができます。バッキング Bean は、JSF 管理対象 Bean とも呼ばれる通常の JavaBeans コンポーネントであり、このコンポーネントの Bean プロパティーとメソッドは JSF コンポーネントで使用できます。

この節では、name および birthday の 2 つの Bean プロパティーを公開する UserBean 管理対象 Bean を作成します。

  1. 「プロジェクト」ウィンドウでプロジェクトノードを右クリックし、「新規」>「その他」(Ctrl-N) を選択します。「JavaServer Faces」カテゴリの下で、「JSF 管理対象 Bean」テンプレートを選択し、「次へ」をクリックします。
  2. Bean に「UserBean」という名前を付け、これを格納する「astrologer.user」という名前の新規パッケージを作成します。そのほかの設定をデフォルト値のままにし、「完了」をクリックします。

    サンプルデータを含む新規 JSF 管理対象 Bean ウィザード

    IDE で UserBean.java がソースエディタに表示され、次の Bean 宣言が faces-config.xml に追加されます。
    <managed-bean>
        <managed-bean-name>UserBean</managed-bean-name>
        <managed-bean-class>astrologer.user.UserBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
  3. 次のフィールド宣言 (ボールドで表示) を UserBean.java に追加します。
    public class UserBean {
    
        String name;
        String birthday;
  4. フィールドの取得メソッドおよび設定メソッドを生成します。この操作は、ファイル内の任意の場所を右クリックし、「リファクタリング」>「フィールドをカプセル化」を選択します。表示されるダイアログで、name および birthday の両方の取得メソッドと設定メソッドのオプションを選択し、「リファクタリング」をクリックします。

    サンプルデータが表示された「フィールドをカプセル化」ダイアログ


    IDE でフィールドのアクセスレベルが「private」に変わり、取得メソッドと設定メソッドがファイルに直接作成されます。
  5. greeting.jsp に次の変更 (ボールドで表示) を加えます。
    <f:view>
        <h:form>
            <p>Enter your name: <h:inputText value="#{UserBean.name}" /></p>
            <p>Enter your birthday: <h:inputText value="#{UserBean.birthday}" /></p>
            <h:commandButton value="Submit" action="submit" />
        </h:form>
    </f:view>
    変更を入力するとき、UserBeans.java およびそのプロパティーに対し、Ctrl- スペースキーを押して使用可能なオプションを選択することで、IDE のコード補完サポートを使用できます。
  6. JSF の taglib 宣言を success.jsp に追加します。これは greeting.jsp からコピー&ペーストすることができます。
  7. 空の JSF フォームを success.jsp に追加します。この操作は、「パレット」ウィンドウ (Ctrl-Shift-8) の「JSF フォーム」ボタンをクリックしてソースエディタの <h2> タグの下の箇所にドラッグして実行します。
  8. 次の変更を success.jsp に加えます (ボールドで表示)。
    <h2>Congratulations</h2>
    
        <f:view>
            <h:form>
                <p>You've successfully registered with jAstrologer.</p>
                <p>Your name is <h:outputText value="#{UserBean.name}" /></p>
                <p>Your birthday is <h:outputText value="#{UserBean.birthday}" /></p>
            </h:form>
        </f:view>
  9. 「プロジェクト」ウィンドウでプロジェクトノードを右クリックし、「実行」を選択します。アプリケーションが再配備および実行されると、同じ greeting.jsp ページがブラウザに表示されます。値を入力して「Submit」をクリックすると、success.jsp は今度は次のように入力した値が表示されます。

    ユーザー入力が表示された success.jsp


関連項目

このドキュメントでは、NetBeans IDE で JSF フレームワークを使用して Web アプリケーションを作成する方法を説明しました。JSF コンポーネントを使用してユーザー入力を取得する簡単な JSP ページの作成方法と、ページナビゲーションの構成方法をデモしました。また、JSF 管理対象 Bean の作成方法とユーザー入力を読み取って Bean のプロパティーに書き込む方法を示しました。

NetBeans IDE でのそのほかの Web フレームワークの使用方法についての詳細は、次のリソースを参照してください。

Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems