コンバータ・バリデータ
J2EE II 第7回
2005年4月24日
1
ここでの内容

コンバータ・バリデータの手法について学
ぶ。
2
コンバータ
3
コンバータとは何か


h:inputText 要素のようなテキスト入力フィールド
には、基本的には String 型のデータが入る。
コンバータとは、Value Binding を使うタグと
Managed Beanのプロパティ間でデータ変換を行
うもの。


h:inputText に入力されたデータを、Integer や Date
型に変換
Integer や Date 型のオブジェクトの値を、
h:outputText などで出力
4
Managed Bean
// number プロパティは Integer 型
public Integer getNumber() {
return number;
}
// date プロパティは Data 型
public Date getDate() {
return date;
}
5
このサンプルの出力例
6
number プロパティと
UIコンポーネントとの対応 (1)
<h:inputText id="number1"
converter="javax.faces.Integer"
value="#{ParameterBean.number}“
/>
<h:outputText id="number2"
value="#{ParameterBean.number}" />
7
number プロパティと
UIコンポーネントとの対応 (2)
converter="javax.faces.Integer“
value="#{ParameterBean.number}“


入力されたデータを、Integer 型に変換す
るコンバータを指定する。
データは、ParameterBean の number プ
ロパティに保存する。
8
JSF標準のコンバータ






BigDecimalConverter
BigIntegerConverter
BooleanConverter
ByteConverter
CharacterConverter
DateTimeConverter






DoubleConverter
FloatConverter
IntegerConverter
LongConverter
NumberConverter
ShortConverter
9
次のコンバータは
記述を省略できる








BooleanConverter
ByteConverter
CharacterConverter
DoubleConverter
FloatConverter
IntegerConverter
LongConverter
ShortConverter
10
number プロパティと
UIコンポーネントとの対応 (3)
<h:inputText id="number1"
value="#{ParameterBean.number}“
/>

converter属性は省略できる。
11
date プロパティと
UIコンポーネントとの対応 (1)
日付を入力してください (例 04/08/09):
<h:inputText id="date1"
value="#{ParameterBean.date}">
<f:convertDateTime
dateStyle="short" />
</h:inputText>
12
date プロパティと
UIコンポーネントとの対応 (2)
<h:outputText id="date2"
value="#{ParameterBean.date}">
<f:convertDateTime
dateStyle="full" />
</h:outputText>

「2004年8月9日 (月曜日)」というように表示され
る。
13
出力例
14
カスタム・コンバータ

コンバータは、自分で作成することもできる。
15
バリデータ
16
バリデータとは何か

入力されたデータが、そのアプリケーション
に適合するものかどうかチェックする機能。
例えば・・・



ここは必須項目なので、必ず入力しなければ
ならない。
ここには、1~10までの数が入る
適合しなかった場合は、エラーメッセージを
表示できる。
17
バリデータに適合する場合の
出力例
18
バリデータに適合しない場合の
出力例
19
JSF標準のバリデータ



DoubleRangeValidator
LengthValidator
LongRangeValidator
20
必須項目のチェック
お名前を入力してください(必須):
<h:inputText id="name1" required="true"
value="#{ParameterBean.name}" />

データが入力されていないとエラーになる。
21
h:message 要素
<h:inputText id="name1" required="true"
value="#{ParameterBean.name}" />
<h:message for="name1" />


エラーメッセージを表示するUIコンポーネント
for 属性で指定した UIコンポーネントに関するエ
ラーメッセージを表示する。
22
文字列の長さのチェック (1)
電話番号を入力してください(10文字以上):
<h:inputText id="tel1“ value=
"#{ParameterBean.telephoneNumber}">
<f:validateLength minimum="10" />
</h:inputText>
<h:message for="tel1" />
23
文字列の長さのチェック (2)
<f:validateLength minimum="10" />



文字列の長さをチェックするバリデータ
最小でも10文字は必要になる。
ほかに、maximum 属性もある。最大で何
文字までかチェックする
24
数の範囲のチェック (1)
品物の数を入力してください(1~10):
<h:inputText id="quantity1"
value="#{ParameterBean.quantity}">
<f:validateLongRange
minimum="1" maximum="10"/>
</h:inputText>
<h:message for="quantity1" />
25
数の範囲のチェック (2)
<f:validateLongRange
minimum="1" maximum="10"/>


整数の数の範囲をチェックする。
1 ~ 10 までの範囲となる。それ以外だと
エラーになる。
26
バリデータに適合する場合の
出力例
27
バリデータに適合しない場合の
出力例
28
カスタム・バリデータ

バリデータは、自分で作成することもできる。
29
まとめ
30
まとめ


「コンバータ」は数字や日付形式のデータ
を入力したときに、自動的にIntegerや
Dateクラスにコンバートする。
「バリデータ」を使うことにより、Webアプリ
ケーションに入力されたデータが、そのア
プリケーションに適合するものかどうか
チェックできるようになる。
31
コンバータ・バリデータの
標準搭載によるメリット (1)


Webアプリケーションを作成するうえで、コ
ンバータやバリデータはよく利用される。
標準のコンバータやバリデータで、多くの
Webアプリケーションの需要を満たせるは
ず。
32
コンバータ・バリデータの
標準搭載によるメリット (2)




バリデータやコンバータは、JSPに記述するだけ
で(一部のものは記述しなくても)利用できるよう
になる。
使い方に迷うことはない。
Struts などの技術を使って、クライアントサイドで
データのチェックを行うバリデータを書くには、
JavaScript のコードを書く必要があった。
JSF標準のバリデータを使うことに、こうした手間
も省ける。
33
ダウンロード

PowerPoint ファイル