2003年度 データベース論

パラメータの受け渡し
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