目次へ

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機能で、チェックを行うようにする事。
  • 名前・社員番号が入力されなかった場合には、入力エラーとなるように検証ルールを変更する事。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp