Value Binding エンタープライズアプリケーション II 第6回 / 2006年7月9日 1 ここでの内容 JSFでのパラメータの受け渡し方法につい て学ぶ。 2 やりたいこと 画面1のテキス トフィールドに 入力したパラ メータを、画面 2で表示する。 3 JavaBeansとは何か 4 JavaBeansとは何か Javaによるコンポーネント技法 いくつかのルールのもとに作られた Javaの クラス だから、取り扱いやすい JavaBeansの例 ボタンやテキストフィールドなどのUIコン ポーネント 本のデータと関連する処理 5 JavaBeans のルール 直列化 引数無しのコンストラクタ プロパティ 6 JavaBeansのルール (1) 直列化 必要に応じて、インスタンスをバイト列に変換できるよう にする。 インスタンスをファイルに保存する インスタンスをネットワークで転送する java.io.Serializable インタフェースを実装する。 このインタフェースでは、メソッドは用意されていない。 public class HogeBean implements Serializable { …… …… } 7 JavaBeansのルール (2) 引数無しのコンストラクタ 引数無しのコンストラクタ (= デフォルト・コンストラクタ) を用意する。 public class HogeBean implements Serializable { public HogeBean() { …… } …… } 8 JavaBeansのルール (3) プロパティ Bean の持つ「属性」のこと ボタンをあらわす Bean であれば、次のも のがプロパティ Windows の「プロパティ」と同じこと ボタンの色 / ボタンに描かれる文字 など 本をあらわす Bean であれば、次のものが プロパティ タイトル / 著者 / 出版社 など 9 「本」を表す Bean public class Book implements Serializable { private String t; public Book() { …… } public String getTitle() { return t;} public void setTitle(String t) { this.t = t; } } 10 メソッドのネーミングルールと プロパティ title というプロパティがある setTitle() や getTitle() というメソッドがあ る setTitle() や getTitle() というメソッドがある。 title というフィールドがあることを意味しない。 title というプロパティがある。 メソッドがあるから、プロパティが存在する 11 setter と getter setter --> setTitle() setTitle() というスタイルのメソッド プロパティに値をセットできる getter --> getTitle() getTitle() というスタイルのメソッド プロパティの値を得ることができる どちらかが存在するだけでプロパティになりうる 12 setter と getter とプロパティ setter getter プロパティ setTitle() getTitle() title setter と getter では、先頭が大文字にな る プロパティ名では、先頭が小文字 13 プロパティを導入することの利点 プロパティは、オブジェクトの属性にアクセ スするための方法を仕様化したもの 仕様化した結果、getter や setter 以外の 手段でもプロパティにアクセスできるように なる ツールから 「式言語」と呼ばれるものから 14 Managed Bean の作成 15 Managed Bean とパラメータ HTMLのフォームから入力されたパラメータ を、Managed Bean (または Backing Bean) と呼ばれる JavaBeans に格納する。 このとき、Managed Bean のプロパティで パラメータの情報を管理する。 16 Managed Bean の例 (1) public class ParameterBean { private String word; …… public String getWord() { return word;} public void setWord(String w) { word = w; } …… } 17 Managed Bean の例 (2) この Bean には、word というプロパティが ある。 この word プロパティで、テキストフィール ドに入力された情報を管理する。 18 faces-config.xml の設定 19 概要 faces-config.xml に、この Managed Bean の情報を記述し ておく。 <faces-config> <managed-bean> ...... </managed-bean> ...... <faces-config> 20 managed-bean 要素 <managed-bean> <managed-bean-name> ParameterBean </managed-bean-name> <managed-bean-class> ParameterBean </managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> 21 managed-bean-class 要素 <managed-bean-class> ParameterBean </managed-bean-class> Managed Bean のクラス名を指定する 22 managed-bean-name 要素 <managed-bean-name> ParameterBean </managed-bean-name> この Bean に “ParameterBean” という名 前をつける。 23 managed-bean-scope 要素 (1) <managed-bean-scope> session </managed-bean-scope> Bean の生存期間を表す。 24 managed-bean-scope 要素 (2) どのような値があるか application session セッションが有効なあいだ request そのWebアプリケーションが起動してから終了するまで (HTTPの)要求から応答まで none スコープには属さない 25 managed-bean-scope 要素 (3) Managed Bean は、managed-beanscope 要素の設定によって自動的にイン スタンスが生成される。 JSP の useBean タグを使う必要はない。 26 JSP と Value Binding 27 page1.jsp <f:view> <h:form id="searchForm"> <h:inputText id="word" value="#{ParameterBean.word}" /> <h:commandButton id="button1" action="success" value="Go!" /> </h:form> </f:view> 28 #{ParameterBean.word} テキストフィールドに入力された文字列は、 ParameterBean の word プロパティに格 納される。 こうしたしくみのことを “Value Binding” と 言う。 こうした #{……} という書式を “Value Binding 式” と言う。 29 Value Binding 式 #{ Beanの名前 . プロパティ名 } “Beanの名前” は、 先の managed-beanname 要素の内容部分 “プロパティ名” は、入力フィールドのパラ メータ情報を格納する Bean のプロパティ 名 30 page2.jsp <f:view> <h:form id="searchForm"> <h:outputText id="word" value="#{ParameterBean.word}" /> </h:form> </f:view> 31 h:outputText 要素 (1) <h:outputText id="word" value="#{ParameterBean.word}" /> value属性の値を表示するUIコンポーネン ト id 属性がある。 32 h:outputText 要素 (2) <h:outputText id="word" value="#{ParameterBean.word}" /> Value Binding によって、ParameterBean の word プロパティの値が出力される。 33 まとめ (1) page1.jsp の h:inputText に入力 された文字は Value Binding 式に よって ParameterBean の word プロパティに 格納される 34 まとめ (2) ParameterBean は、 faces-config.xml の 設定により session スコープを持つ。 page1.jsp と page2.jsp で ParameterBean を 共有できる。 35 まとめ (3) 同じく facesconfig.xml の設定 により、page1.jsp のボタンを押すと page2.jsp に遷移す る。 36 まとめ (4) page2.jsp では、 h:outputText タグ の Value Binding 式によって、 ParameterBean の word プロパティの 値が出力される。 37 まとめ (5) こうして、page1.jsp で入力された文字 が page2.jsp で表 示されるようになる。 38
© Copyright 2025 ExpyDoc