12.3. validation.xmlの編集
「WEB-INF/validation.xml」を編集します。validation.xmlはパラメータの検証ルールを定めた設定ファイルです。validation.xmlの詳細に関する説明は後の章にまわし、ここでは概略について説明します。
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"> <form-validation> <formset> <form name="productForm"> <field property="name" depends="required"> <msg name="required" key="name.invalidate" /> </field> </form> </formset> </form-validation>
validation.xmlはおおよそ以上のような形になります。XML宣言・DOCTYPE宣言、<form-validation>タグについては変わりません。同じようにして下さい。
<form-validation>タグの中の<formset>タグの中に、検証ルールを定義します。<form>タグはvalidatorによってチェックを行うActionForm毎に定義します。name属性でActionFormの名前を指定します。この名前は、struts-config.xmlに設定した名前と、必ず同じにして下さい。
<field>タグは、ActionFormのプロパティとそれに対する検証ルールを定義します。チェックしないプロパティについては定義しません。<field>タグのproperty属性にはActionFormのプロパティ名を、dependsには適用する検証ルールの名前を指定します。複数のルールを適用する場合には、「,」で区切ります。ルールの名前については、validator-rules.xmlに定義されています。以下によく使用されるルールの一部をまとめます。
required | 値が設定されているかどうかチェック。設定されていなければ、エラーとなる。 |
minlength | 文字列の長さが、一定の長さ以上かチェック。それよりも短ければ、エラー。長さは「minlength」変数で設定。変数については後述。 |
maxlength | 文字列の長さが、一定の長さ以下かチェック。それよりも長ければ、エラー。長さは「maxlength」変数で設定。 |
integer | 値が整数かどうかチェック。整数でなければエラー。 |
例はnameプロパティが設定されているかどうかチェックしています。
ルールの説明のところで出てきた変数は、<field>タグの中に<var>タグで定義します。<var>タグの中、<var-name>タグで変数名、<var-value>タグで変数の値を指定します。以下の例では、nameプロパティが存在し、かつ10文字以下かどうかチェックしています。
<field property="name" depends="required, maxlength"> <msg name="required" key="name.invalidate" /> <msg name="maxlength" key="name.invalidate" /> <var> <var-name>maxlength</var-name> <var-value>10</var-value> </var> </field>
<msg>タグはチェックを通らなかった場合に表示する、エラーメッセージを定義したものです。validateメソッドが返すActionErrorインスタンスと同じで、表示するメッセージをリソースのキーで指定します。「name」属性はどのルールが通らなかった場合に表示するか指定するもので、<field>タグのdepends属性で指定されている値から1つ指定します。「key」属性には表示するメッセージのキーを指定します。
ではActionErrorsのaddErrorメソッド(ActionErrorを追加する)の際に指定した第1引数の値は、どうなるのでしょうか。この値はActionFormのプロパティ名、つまり<field>タグのproperty属性の値と同じになります。従って以下のタグでは、nameプロパティの検証で発生したエラーメッセージが、そのタグの場所に出力されます。
<html:errors property="name" />
validation.xmlに関する編集は以上です。また、ValidatorFormを使用する上での必要な作業も以上で終了です。validation.xmlと検証ルールに関する詳細は、後の章で説明します。
(実習課題1)
6章実習課題3のWebアプリケーションを改良しなさい。
- validator機能で、チェックを行うようにする事。
- 名前・社員番号が入力されなかった場合には、入力エラーとなるように検証ルールを変更する事。