前回(Strutsメッセージのまとめ-(4))からの続きです。
- JSPでの通常のリソース文言(国際化対応など)…まとめ(1)
- Actionから通知される通常メッセージ…まとめ(2)
- Actionから通知されるエラーメッセージ…まとめ(3)
- validateでのエラーメッセージ…まとめ(4)
- validatorでのエラーメッセージ…まとめ(5)←今回
5.validatorでのエラーメッセージ
validatorは入力のチェックやメッセージの表示を、設定で行うためのフレームワークです。
例えば、このフィールドは、必須入力チェック。また別のフィールドは数値入力+範囲(1~12)のチェックを行う。
というように、汎用的な入力チェックを行うことができます。
今回は、このvalidatorを使って入力チェックを行った時の、メッセージ表示の指定方法について説明します。
色々なパターンがあるので、全パターンを網羅してみました。
[1]既定リソースの表示
ActionFormのlastnameというプロパティです。
必須入力チェック(required)を行います。チェックに失敗したら、リソース”errors.required”を表示します。
“errors.required”が使われるのは、必須入力チェックの既定のリソースだからです。
このリソースは、{0}という埋め込み文字列を用意しています。ここには、“姓”という文字列を埋め込みます。
resource=”false”という指定の意味は、”姓”という文字列を、そのまま埋め込む場合に指定します。埋め込み文字列もリソースを使う場合には、trueに指定します。(後述)
[2]指定リソースの表示
ActionFormのfirstnameというプロパティです。
必須入力チェック(required)を行います。チェックに失敗したら、リソース”msg5.firstname.required”を表示します。
要素で指定しているのが、このチェックエラーの場合に使用するメッセージリソースのキーです。
[3]埋め込み文字列のリソース化
ActionFormのaddressというプロパティです。
必須入力チェック(required)を行います。チェックに失敗したら、リソース”errors.required”を表示します。(既定)
ここまでは、最初のパターンと同じですが、こちらは、埋め込み文字列についてもリソースを使用します。
という指定により、{0}に埋め込む文字列は、リソース”msg5.address”で指定した文字列を使います。
が使え、これ以外にも
という指定も可能です。
リソース”msg5.address”は”住所”という文字列なので、”住所 is required”というように埋め込まれます。
[4]複数のチェックルールを指定
ActionFormのoldというプロパティです。
必須入力チェック(required)と、整数チェック(integer)を行います。チェックに失敗したら、それぞれ次のメッセージをを表示します。
必須チェックエラーの場合、リソース”msg5.old.required”で指定された文字列
整数チェックエラーの場合、リソース”msg5.old.integer”で指定された文字列
field要素のdepends属性で、どのようなチェックを行うかを指定します。ここではカンマ区切りで2つのチェックルールを指定します。
2つの入力チェックを行うならば、それぞれ別のメッセージにすることが考えられます。
msg要素のname属性でチェックルールを指定し、対応するリソースキーを指定します。
[5]埋め込み文字列に、validatorで使用する値を参照
ActionFormのbirthMonthというプロパティです。
整数範囲チェック(intRange)と、必須チェック(required)を行います。チェックに失敗したら、それぞれ次のメッセージを表示します。
必須チェックエラーの場合、リソース”errors.required”を表示する(既定)
埋め込み文字の1つ目は、リソース”msg5.birthMonth”を使用する。
整数範囲チェックエラーの場合、リソース”msg5.intRange”を表示する
埋め込み文字の1つ目は、リソース”msg5.birthMonth”を使用する。
埋め込み文字の2つ目は、パラメータ”min”の値を使用する。
埋め込み文字の3つ目は、パラメータ”max”の値を使用する。
整数範囲チェックを行う場合は、最小値と最大値を指定するはずです。最小値と最大値を使ってValidatorが入力値を検証します。
エラーになった場合は、「n~mの間の整数で入力してください」といった表示をするのですが、このn,mは範囲チェックに使用した最小値、最大値と一致します。
${var:min}という指定は、チェックで使用する最小値を参照します。
参照を使わない場合には、1,12という値を2度記述することになってしまいます。
validatorで使うメッセージは複雑です。
これで、Strutsで使うメッセージリソースについては、一通り紹介できたと思います。
サンプルプログラムは、StrutsMsg5.zipです。