Struts1.3.5のvalidation.xml

感想おまちしてます!

スポンサーリンク

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" />