Struts2.0.9のValidation

感想おまちしてます!

Struts2ではXWorkのValidationフレームワークが使える。ValidationhaActionの実行前にValidationルールを入力に行うことができる。

Struts2 document Validation

annotationを使ってValidationを行うことも可能。

Struts2 document Validation Annotation

スポンサーリンク

Registering Validators

ValidationルールはValidatorによってハンドルされる。ルールはValidatorFactoryのregisterValidatorメソッドを使って登録されなければならない。

登録よりも簡単な方法として、validators.xmlをクラスパスのルート(/WEB-INF/classes)に置くことで、validatorがこのファイルを変わりに使ってくれる。

下の内容でvalidators.xmlを作れば、フレームワークで定義されている全てのValidatorを宣言できる。

<validators>
<validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
<validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
<validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
<validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
<validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
<validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
<validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
<validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
<validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
<validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
<validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
<validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
<validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
</validators>

Note

カスタマイズしたValidatorが必要でないならば、validators.xmlをクラスパスに置くのは必須ではない。

xwork.jarの「com/opensymphony/xwork2/validator/validators/default.xml」に定義されていると、Validatorの所定の設定は自動的に行われる。

警告

カスタムValidatorを定義して、validators.xmlを作成してクラスパスに置いた場合、上記デフォルトのValidatorもvalidators.xmlに定義しないとだめ。

一度validators.xmlがクラスパスに検出されたら、デフォルトのValidator
(com/opensymphony/xwork2/validator/validators/default.xml)はロードされない。ロードされ
るのは、カスタムvalidators.xmlがクラスパスにみつからない場合だけなので注意。

Non-Field Validator Vs Field-Validator

Validatorをvalidation.xmlに定義するには2つ方法がある。

  • <validator>
  • <field-validator>