Strutsメッセージのまとめ-(5)

前回(Strutsメッセージのまとめ-(4))からの続きです。

5.validatorでのエラーメッセージ

validatorは入力のチェックやメッセージの表示を、設定で行うためのフレームワークです。
例えば、このフィールドは、必須入力チェック。また別のフィールドは数値入力+範囲(1~12)のチェックを行う。
というように、汎用的な入力チェックを行うことができます。

screen.png

今回は、このvalidatorを使って入力チェックを行った時の、メッセージ表示の指定方法について説明します。
色々なパターンがあるので、全パターンを網羅してみました。

[1]既定リソースの表示

ActionFormのlastnameというプロパティです。
prop1_lastname.png
必須入力チェック(required)を行います。チェックに失敗したら、リソース”errors.required”を表示します。
“errors.required”が使われるのは、必須入力チェックの既定のリソースだからです。
このリソースは、{0}という埋め込み文字列を用意しています。ここには、“姓”という文字列を埋め込みます。
resource=”false”という指定の意味は、”姓”という文字列を、そのまま埋め込む場合に指定します。埋め込み文字列もリソースを使う場合には、trueに指定します。(後述)

[2]指定リソースの表示

ActionFormのfirstnameというプロパティです。
prop2_firstname.png
必須入力チェック(required)を行います。チェックに失敗したら、リソース”msg5.firstname.required”を表示します。
<msg>要素で指定しているのが、このチェックエラーの場合に使用するメッセージリソースのキーです。

[3]埋め込み文字列のリソース化

ActionFormのaddressというプロパティです。
prop3_address.png
必須入力チェック(required)を行います。チェックに失敗したら、リソース”errors.required”を表示します。(既定)
ここまでは、最初のパターンと同じですが、こちらは、埋め込み文字列についてもリソースを使用します。
<arg0 key="msg5.address" />という指定により、{0}に埋め込む文字列は、リソース”msg5.address”で指定した文字列を使います。
<arg0>...<arg3>が使え、これ以外にも<arg position="0"/>という指定も可能です。
リソース”msg5.address”は”住所”という文字列なので、”住所 is required”というように埋め込まれます。

[4]複数のチェックルールを指定

ActionFormのoldというプロパティです。
prop4_old.png
必須入力チェック(required)と、整数チェック(integer)を行います。チェックに失敗したら、それぞれ次のメッセージをを表示します。
 必須チェックエラーの場合、リソース”msg5.old.required”で指定された文字列
 整数チェックエラーの場合、リソース”msg5.old.integer”で指定された文字列

field要素のdepends属性で、どのようなチェックを行うかを指定します。ここではカンマ区切りで2つのチェックルールを指定します。
2つの入力チェックを行うならば、それぞれ別のメッセージにすることが考えられます。
msg要素のname属性でチェックルールを指定し、対応するリソースキーを指定します。

[5]埋め込み文字列に、validatorで使用する値を参照

ActionFormのbirthMonthというプロパティです。
prop5_birthMonth.png
整数範囲チェック(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です。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)