yohjizzz's Blog

I'm a Programmer.

Spring 2.5 で Web 開発(2)DTO編 〜アノテーションでValidation〜

TeedaSAStruts に慣れてしまったせいか Validation を XML には書くのはやはり抵抗があるので、
spring-modules-validation で利用できる Bean Validation Framework を使います。

ソースコードはこんな感じになります。

x.dto.LoginDto

package x.dto;

import java.io.Serializable;
import org.springmodules.validation.bean.conf.loader.annotation.handler.MaxLength;
import org.springmodules.validation.bean.conf.loader.annotation.handler.MinLength;
import org.springmodules.validation.bean.conf.loader.annotation.handler.NotBlank;
import org.springmodules.validation.bean.conf.loader.annotation.handler.RegExp;

public class LoginDto implements Serializable { // もちろんPOJOでok○

    private static final long serialVersionUID = -1L;

    @NotBlank //フィールドにアノテーションを指定すればok。エラーメッセージのカスタマイズも可○
    @MaxLength(64)
    private String email;

    @NotBlank // 必須検証○
    @MaxLength(16) // 文字数上限検証○
    @MinLength(8) // 文字数下限検証○
    @RegExp("[a-zA-Z0-9]+") // 正規表現パターン検証○
    private String password;

    public String getEmail() { return this.email; }
    public void setEmail(String email) { this.email = email; }
    public String getPassword() { return this.password; }
    public void setPassword(String password) { this.password = password; }

}

続いて XML です。最初に Bean Validator Framework の Validator コンポーネントを登録しておしまいです。

applicationContext.xml

<bean
  id="beanValidator"
  class="org.springmodules.validation.bean.BeanValidator">
  <property name="configurationLoader" ref="configurationLoader" />
</bean>
<bean
  id="configurationLoader"
  class="
org.springmodules.validation.bean.conf.loader.annotation.AnnotationBeanValidationConfigurationLoader" />

定番は Commons Validator だろうけど、コンポーネントが自動登録できるようになったので、
Validation も XML 書きたくねーな、ということで試してみました。
でも Bean Validation Framework は日本語の情報がホントに少ない。けっこうシンプルで良いと思うけど。