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