パラメータの受け渡し J2EE II 第6回 2005年4月24日 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 Managed Bean の作成 14 Managed Bean とパラメータ HTMLのフォームから入力されたパラメータ を、Managed Bean (または Backing Bean) と呼ばれる JavaBeans に格納する。 このとき、Managed Bean のプロパティで パラメータの情報を管理する。 15 Managed Bean の例 (1) public class ParameterBean { private String word; …… public String getWord() { return word;} public void setWord(String w) { word = w; } …… } 16 Managed Bean の例 (2) この Bean には、word というプロパティが ある。 この word プロパティで、テキストフィール ドに入力された情報を管理する。 17 faces-config.xml の設定 18 概要 faces-config.xml に、この Managed Bean の情報を記述し ておく。 <faces-config> <managed-bean> ...... </managed-bean> ...... <faces-config> 19 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> 20 managed-bean-class 要素 <managed-bean-class> ParameterBean </managed-bean-class> Managed Bean のクラス名を指定する 21 managed-bean-name 要素 <managed-bean-name> ParameterBean </managed-bean-name> この Bean に “ParameterBean” という名 前をつける。 22 managed-bean-scope 要素 (1) <managed-bean-scope> session </managed-bean-scope> Bean の生存期間を表す。 23 managed-bean-scope 要素 (2) どのような値があるか application session セッションが有効なあいだ request そのWebアプリケーションが起動してから終了するまで (HTTPの)要求から応答まで none スコープには属さない 24 managed-bean-scope 要素 (3) Managed Bean は、managed-beanscope 要素の設定によって自動的にイン スタンスが生成される。 JSP の useBean タグを使う必要はない。 25 JSP と Value Binding 26 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> 27 #{ParameterBean.word} テキストフィールドに入力された文字列は、 ParameterBean の word プロパティに格 納される。 こうしたしくみのことを “Value Binding” と 言う。 こうした #{……} という書式を “Value Binding 式” と言う。 28 Value Binding 式 #{ Beanの名前 . プロパティ名 } “Beanの名前” は、 先の managed-beanname 要素の内容部分 “プロパティ名” は、入力フィールドのパラ メータ情報を格納する Bean のプロパティ 名 29 page2.jsp <f:view> <h:form id="searchForm"> <h:outputText id="word" value="#{ParameterBean.word}" /> </h:form> </f:view> 30 h:outputText 要素 (1) <h:outputText id="word" value="#{ParameterBean.word}" /> value属性の値を表示するUIコンポーネン ト id 属性がある。 31 h:outputText 要素 (2) <h:outputText id="word" value="#{ParameterBean.word}" /> Value Binding によって、ParameterBean の word プロパティの値が出力される。 32 まとめ (1) page1.jsp の h:inputText に入力 された文字は Value Binding 式に よって ParameterBean の word プロパティに 格納される 33 まとめ (2) ParameterBean は、 faces-config.xml の 設定により session スコープを持つ。 page1.jsp と page2.jsp で ParameterBean を 共有できる。 34 まとめ (3) 同じく facesconfig.xml の設定 により、page1.jsp のボタンを押すと page2.jsp に遷移す る。 35 まとめ (4) page2.jsp では、 h:outputText タグ の Value Binding 式によって、 ParameterBean の word プロパティの 値が出力される。 36 まとめ (5) こうして、page1.jsp で入力された文字 が page2.jsp で表 示されるようになる。 37
© Copyright 2024 ExpyDoc