validator-rules.xml
jarに含まれたらしい。validatorの定義が書かれている。
http://struts.apache.org/1.3.5/userGuide/building_view.html#validator
validation.xml
Validatorの設定ファイル。
XML宣言
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">
<form-validation>
<formset>
</formset>
</form-validation>
サンプル
<form name="TestForm">
<field property="name" depends="required,minlength,maxlength">
<msg name="required" key="errors.required" />
<msg name="minlength" key="errors.length" />
<msg name="maxlength" key="errors.length" />
<arg name="required" key="名前" resource="false" />
<arg name="minlength" key="名前" resource="false" />
<arg name="minlength" key="${var:minlength}" resource="false" />
<arg name="minlength" key="${var:maxlength}" resource="false" />
<arg name="maxlength" key="名前" resource="false" />
<arg name="maxlength" key="${var:minlength}" resource="false" />
<arg name="maxlength" key="${var:maxlength}" resource="false" />
<var>
<var-name>minlength</var-name>
<var-value>8</var-value>
</var>
<var>
<var-name>maxlength</var-name>
<var-value>32</var-value>
</var>
</field>
</form>
form
Validateするフォームをname属性に指定する。
<form name="TestForm">
field
<field property="name" depends="required,minlength,maxlength">
- property
- FormのGetter、Setter名を指定する。getName()だったらname。
- depends
- validator-rules.xmlに指定された名前を指定する。複数指定する場合はカンマ区切りで。
msg
<msg name="required" key="errors.required" />
- name属性
- エラーとなった場合のメッセージをMesasgeResourceのキーで指定する場合に利用する。これがない場合はデフォルトのMessageResourceが使われる。dependsで指定したバリデータ名を記入する。
- key
- MessageResourceのキー
arg
<arg name="required" key="名前" resource="false" />
<arg name="minlength" key="名前" resource="false" />
<arg name="minlength" key="${var:minlength}" resource="false" />
<arg name="minlength" key="${var:maxlength}" resource="false" />
MessageResourceに与える引数を指定するためのもの。
- name
- どのバリデートのメッセージ引数なのかを指定
- key
- MessgaeResourceに与える値
- resource
- trueならばMessageResourceのkeyを与えることができる。falseの場合は与える値を直に書くことが可能。${var:minlength}というのはverタグのvar-valueを変数のように呼び出している。
MessageResourceが
//msg.properties
errors.required={0}は必須です。
errors.length={0}は{1}から{2}文字を入力してください。
の場合、エラー時は以下のように表示される。
名前は必須です。
名前は8から32文字を入力してください。
複数のエラーに引っかかる場合はすべてのメッセージが表示される。
var
<var>
<var-name>minlength</var-name>
<var-value>8</var-value>
</var>
dependsで指定したバリデータに必要な引数。上記の場合はminlengthバリデータのチェックに必要な最小値を8に設定している。
メッセージ数が多くなる場合
バリデータでのチェックが多くなると、一つの項目で複数のエラーがチェックされてしまい、画面にたくさんのメッセージが表示されてしまう。
そういう場合は、メッセージを統一して、一つのメッセージで伝えるのも手。例えば、最小値や最大値が間違っている場合は「●●は●文字から●文字です」とすれば、一つのメッセージですむ。
<msg name="minlength" key="errors.length" />
<msg name="maxlength" key="errors.length" />