TOPシステム開発> コンポーネントとマネージドBeanのバインディング




まるごとサーバサイドJava
JDeveloperで学ぶJSF入門

第11回:バインディングとテスト

著者:WINGSプロジェクト  佐藤治夫(株式会社ビープラウド)、
小泉守義

監修:山田祥寛   2006/8/25
1   2  次のページ
コンポーネントとマネージドBeanのバインディング

   最後に、コンポーネントとマネージドBeanのバインディングを行います。まず、プロパティ・インスペクタでinput.jspの入力コンポーネントのvalue属性を、それぞれ表1にしたがって書き換えます。
コンポーネントID value属性に記述するバインディング式
birthYear #{userInfo.birthYear}
birthMonth #{userInfo.birthMonth}
birthDay #{userInfo.birthDay}
sex #{userInfo.sex}
bloodType #{userInfo.bloodType}

表1:input.jspの各コンポーネントに指定する値バインディング

   例として、birthYearのバインディングの指定を図1に示しました。

birthYearへのバインディング指定
図1:birthYearへのバインディング指定
(画像をクリックすると別ウィンドウに拡大図を表示します)

   JSFタグの属性に値バインディング式を記述すると、Update Model Valueフェーズで、値バインディング式を指定した入力コンポーネントの入力値が指定されたマネージドBeanのプロパティに格納されるとともに、Render Responseフェーズで指定されたプロパティの値が出力されます。

   次に、「占う」ボタンのaction属性にメソッドバインディング式(#{fortuneTellingService.doFortuneTelling})を指定し、マネージドBeanとしてJSF変数のfortuneTellingServiceに格納されているFortuneTellingServiceオブジェクトのdoFortuneTelling()メソッドがボタンのクリックに伴って呼び出されるようにします。ここでメソッドバインディング式という言葉が出てきましたが、これはBeanのプロパティではなく、Beanに記述されたメソッドを参照する記述です。

   値バインディングとメソッドバインディングは、見た目の違いはまったくありませんが、参照する対象が異なることから呼び方を区別しています。

   output.jspには、最初の手順でダミーとして「***」という文字列を入れていた部分に、次の結果を取得する値バインディング式を記述します。

#{fortuneTellingService.result}

   「他の人を占う」ボタンは、「占う」ボタンと同様にFortuneTellingServiceオブジェクトのdoRetry()メソッドがアクションメソッドとして呼び出されるように、次のメソッドバインディング式を指定します。

#{fortuneTellingService.doRetry}

   以上で、JSFによる本格的な占いアプリケーションが完成しました。最終的なJSPのソースコードをリスト1(input.jsp)をリスト2(output.jsp)に示します。

リスト1:input.jsp(完成版)

(画像をクリックすると別ウィンドウに拡大図を表示します)

リスト2:result.jsp(完成版)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-31j"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<f:view>
   <html>
      <head>
         <meta http-equiv="Content-Type" content="text/html; charset=windows-31j"></meta>
         <title>
            result
         </title>
      </head>
      <body>
         <h:form>
            <h:panelGrid>
               <h:outputText value="あなたのラッキー周辺機器は:"/>
               <h:outputText value="#{fortuneTellingService.result}"/>
               <h:outputText value="です。"/>
               <h:commandButton value="別の人を占う"action="#{fortuneTellingService.doRetry}"/>
            </h:panelGrid>
         </h:form>
      </body>
   </html>
</f:view>

1   2  次のページ

書籍紹介
まるごとサーバサイドJava! Vol.1
まるごとサーバサイドJava! Vol.1 〜初心者からプロまですべての開発者に贈る〜サーバサイドJavaのすべてをまるごと紹介
サーバサイドで実行されるシステム環境Java EEを取り巻く環境は一大変革を遂げようとしています。J2EE時代のEJB(Enterprise Java Beans)からPOJO(Plain Old Java Object)へ、オブジェクト指向からアスペクト指向へ。Sun Microsystems外から発生した新しい流れは本家Java EE 5へ取り入れられる予定です。本書はこうしたJavaの新潮流を余すことなくお伝えします。

発売日:2006/09/01
定価:\2,415(本体 \2,300+税)
著者:WINGSプロジェクト 佐藤治夫(株式会社ビープラウド)、小泉守義 監修:山田祥寛
著者プロフィール
著者:WINGSプロジェクト 佐藤治夫(株式会社ビープラウド)、
小泉守義
監修:山田祥寛

WINGSプロジェクトは、有限会社WINGSプロジェクト(代表取締役山田祥寛)が運営するライティング・チーム。海外記事の翻訳から、主にサーバサイド分野の書籍/雑誌/Web記事の執筆、講演、アプリケーション開発などを幅広く手がける。2006年7月時点での登録メンバーは20名で、現在も一緒に執筆をできる有志を募集中。執筆に興味のある方は、どしどし応募いただきたい。


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
第11回:バインディングとテスト
コンポーネントとマネージドBeanのバインディング
  完成したアプリケーションのテスト
JDeveloperで学ぶJSF入門
第1回 JSFの特長
第2回 JSFを構成する要素
第3回 JSFのライフサイクルとStrutsとの比較
第4回 環境設定
第5回 JSFアプリケーションを作成しよう
第6回 情報入力ページの作成
第7回 コマンドボタンの配置と結果出力ページの作成
第8回 バリデータの設定とメッセージの日本語化
第9回 アプリケーションロジックを追加する
第10回 モデルとビューを統合する
第11回 バインディングとテスト
第12回 カスタムバリデータの作成方法〜JSFをより高度に利用するために
第13回 独自のバリデータタグの作成
第14回 カスタムコンバータの作成
第15回 カスタムコンポーネントの作成(前編)
第16回 カスタムコンポーネントの作成(後編)