必須項目であるページクラスのプロパティにアノテーションで
TRequiredValidator
を指定します.
ポストバック 時,ブラウザで値が入力されないとバリデーションでエラーとなります.
アノテーションの
target
属性でチェック対象となるサブミットボタンの
id
属性の値を指定します.複数の値をカンマ (
','
) 区切りで列挙することができます.
ポストバック
時,
doNext
ボタンが押されたときだけ
name
フィールドが入力されているかチェックが行われます.
ページクラスのプロパティにアノテーションで
TLengthValidator
を指定します.
minimum
属性で最低の長さを,
maximum
属性で最大の長さを設定します. どちらかの指定を省略することもできます.
ポストバック 時,入力された文字列が3~5文字でなければバリデーションでエラーとなります.
ページクラスのプロパティにアノテーションで
TByteLengthValidator
を指定します.
minimum
属性で最低のバイト数を,
maximum
属性で最大のバイト数を設定します. どちらかの指定を省略することもできます.
charSet
属性で文字列からバイト列に変換するエンコーディングを設定することもできます.
省略するとプラットフォームデフォルトのエンコーディングが使われます.
ポストバック 時, 入力された文字列をプラットフォームデフォルトのエンコーディングで変換したバイト列の長さが, 5~10バイトでなければバリデーションでエラーとなります.
ページクラスのプロパティにアノテーションで
TRegularExpressionValidator
を指定し,
pattern
属性で正規表現を設定します.
ポストバック 時,入力された文字列が正規表現にマッチしなければバリデーションでエラーとなります.
ページクラスのプロパティにアノテーションで
EmailValidator
を指定します.
pattern
属性でメールアドレスとして受け入れる正規表現を設定することができます. 省略した場合のデフォルトは
です.
ポストバック 時,入力された文字列がメールアドレスにマッチしなければバリデーションでエラーとなります.
ページクラスのプロパティにアノテーションで
UrlValidator
を指定します.
pattern
属性でメールアドレスとして受け入れる正規表現を設定することができます. 省略した場合のデフォルトは
です.
ポストバック 時,入力された文字列がURLにマッチしなければバリデーションでエラーとなります.
ページクラスのプロパティにアノテーションで
TNumberLengthValidator
を指定します.
integralMin
属性で整数部の最低の長さを,
integralMax
属性で整数部の最大の長さを設定します.
fractionMin
属性で小数部の最低の長さを,
fractionMax
属性で小数部の最大の長さを設定します. いずれかの指定を省略することもできます.
ポストバック 時,入力された数値の小数部が2桁でなければバリデーションでエラーとなります.
ページクラスのプロパティにアノテーションで
TLongRangeValidator
(整数の場合) または
TDoubleRangeValidator
(実数の場合) を指定します.
minimum
属性で最低の値を,
maximum
属性で最大の値を設定します. いずれかの指定を省略することもできます.
ポストバック 時,入力された数値が0~100の範囲内でなければバリデーションでエラーとなります.
テンプレートHTML上で
後から出てくる入力項目
に対応するページクラスのプロパティに, アノテーションで
TEqualValidator
を指定します.
targetId
属性で, 比較対象となる入力項目のプロパティ名を指定します.
ポストバック
時,
pwd1
と
pwd2
に入力された値が異なると,バリデーションでエラーとなります.
テンプレートHTML上で 後から出てくる入力項目 に対応するページクラスのプロパティに, 以下のアノテーションのいずれかを指定します (括弧内はTigerアノテーションの名前).
TGreaterValidator
(
@Greater
)
TGreaterEqualValidator
(
@GreaterEqual
)
TLessValidator
(
@Less
)
TLessEqualValidator
(
@LessEqual
)
targetId
属性で, 比較対象となる入力項目のプロパティ名を指定します.
ポストバック
時,
to
に入力された値が
from
に入力された値より小さいと,バリデーションでエラーとなります.
実行時に動的に作成したバリデータを適用するすることができます. この機能は「ダイナミックバリデータ」と呼ばれます.
ダイナミックバリデータを適用するプロパティに対応する
get
+
プロパティ名
+
Validator()
という名前の
public
メソッドを作成します. 引数はなく,戻り値の型は
javax.faces.validator.Validator
とします.
get~Validator()
メソッドでは,リクエストパラメータやセッションの状態を参照して
Validator
を作成して返すことができます.
get~Validator()
は PROCESS_VALIDATION フェーズで呼び出されるため,
ページクラスのプロパティにはリクエストパラメータの値が反映されていません. JSF
とページクラスのライフサイクルについては「
JSFライフサイクルとの関係
」を参照してください.
ポストバック
時,
get~Validator()
メソッドが返した
Validator
によってバリデーションが行われます.
ポストバック
時,
name
プロパティのバリデーションは
getNameValidator()
メソッドが返した
TLengthValidator
によって行われます.
javax.faces.internal.ValidatorChain
を使います.
ValidatorChain
の
add(Validator validator)
メソッドで適用したいバリデータを追加します. バリデータは追加された順に適用されます.
ページクラスに名前が
param
で型が
java.util.Map
のプロパティを用意します. Seasar2によってこのプロパティにリクエストパラメータを含む
Map
が設定されます.
get~Validator()
メソッドの中で,
param
プロパティからパラメータ名をキーとしてパラメータ値を取得することができます.
リクエストパラメータの名前は基本的に
':'
+
<input>要素等のid
という形になります.
レイアウト
を使っている場合は
<includeChildBody>
要素や
<include>
要素の
id
属性の値が前に付加され,
':'
+
<form>要素のid
+
':'
+
<input>要素等のid
となります.
forEach
を使っている場合は,
<tbody>
要素等の
id
属性の値と繰り返しのインデックスが付加され,
':'
+ ]
<form>要素のid
+
':'
+
forEachのid
+
':'
+
forEachのインデックス
+
':'
+
<input>要素等のid
となります.
forEachがネストすると, そのたびにforEachの
id
属性の値と繰り返しのインデックスが付加されます.
より複雑な相関チェックや, DBアクセスが必要な場合など,
Validator
によるバリデーションでは不十分な場合は
do~()
メソッド
でバリデーションを行うことができます.
画面の入力項目に対応付けられたページクラスのプロパティの値を変更すると, 表示される画面の内容は変更後のプロパティの値になってしまいます. バリデーションが完了するまでは, 画面に対応付けられたプロパティを変更しないようにする必要があります.
do~()
メソッドでバリデーション違反を検出した場合に メッセージを設定するには, ページクラスに
org.seasar.teeda.extension.util.FacesMessageHelper
型のプロパティを用意します.
FacesMessageHelper
には以下のメソッドがあります.
void addFatalMessage(String
messageId)
void addFatalMessage(String
messageId, Object[] args)
void addFatalMessage(String
clientId, String messageId)
void addFatalMessage(String
clientId, String messageId, Object[]
args)
void addErrorMessage(String
messageId)
void addErrorMessage(String
messageId, Object[] args)
void addErrorMessage(String
clientId, String messageId)
void addErrorMessage(String
clientId, String messageId, Object[]
args)
void addWarnMessage(String
messageId)
void addWarnMessage(String
messageId, Object[] args)
void addWarnMessage(String clientId,
String messageId)
void addWarnMessage(String clientId,
String messageId, Object[] args)
void addInfoMessage(String
messageId)
void addInfoMessage(String
messageId, Object[] args)
void addInfoMessage(String clientId,
String messageId)
void addInfoMessage(String clientId,
String messageId, Object[] args)
messageId
には,
メッセージリソース
ファイルに定義したキーを指定します.
特定の入力項目 (プロパティ) に関連付けられたメッセージを設定するには,
clientId
を指定します. 指定する値は
get~Validator()メソッドの中でリクエストパラメータを参照するには
のリクエストパラメータ名と同じです.
clientId
を指定したメッセージは
メッセージを表示するには
で設定したエリアに出力されます.
clientId
を指定しなかったメッセージは
グローバルなメッセージを表示するには
で設定したエリアに出力されます.
バリデーション対象の
<input>
要素等の
id
属性の値 +
"Message"
を
id
属性とする
<span>
要素を記述します.
ポストバック 時,バリデーションでエラーになると次のように表示されます.
相関チェックによるエラーメッセージなど, 特定の入力項目に属さないメッセージを表示するには,
id
属性が
"messages"
の
<span>
要素を記述します.
グローバルなメッセージがある場合,
<span>
要素は
<ul>
要素に置き換えられ,個々のメッセージが
<li>
要素として出力されます.
グローバルなメッセージがない場合,
<span>
要素も
<ul>
要素も出力されません. このため,
<span>
要素の外側に
<div>
要素を記述することを推奨します.
ポストバック 時,バリデーションでエラーになると次のように表示されます.
id
属性が
"allMessages"
の
<span>
要素を記述します.
メッセージがある場合,
<span>
要素は
<ul>
要素に置き換えられ,個々のメッセージが
<li>
要素として出力されます.
表示するメッセージがない場合,
<span>
要素も
<ul>
要素も出力されません. このため,
<span>
要素の外側に
<div>
要素を記述することを推奨します.
ポストバック 時,バリデーションでエラーになると次のように表示されます.
以下から変更したいメッセージを探し,同じキーを持つ独自のメッセージを
appMessages.propertyes
(日本語のメッセージは
appMessages_ja.properties
) に定義します.
バリデーションのアノテーションに独自のメッセージIDを指定し, それをキーとするメッセージを
appMessages.propertyes
(日本語のメッセージは
appMessages_ja.properties
) に定義します.
エラーとなった要素は
class
属性に
onTeedaError
が追加されるので,CSSで背景を変えるなどして目立たせることができます.
ポストバック 時, バリデーションでエラーになると, テキストフィールドやテキストエリアの背景が設定した色で表示されます.
バリデーション対象となる
<input>
要素等に
title
属性で項目名を指定します.
ポストバック 時,バリデーションでエラーになると次のように表示されます.
ラベルリソース
ファイルに
pagename.id
または
id
という名前のプロパティを定義します.
id
は, バリデーション対象となる
<input>
要素等の
id
属性の値です.
あるいは,バリデーション対象となる
<input>
要素等に
title
属性を付け, その値を
key
+
Label
とします.
ラベルリソース
ファイルに
pagename.key
または
key
という名前のプロパティを定義します.
あるいは,
ポストバック 時,バリデーションでエラーになると次のように表示されます.