4月 7th, 2008at 14:28

Tags: ,

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>