SpringMVCで独自Validationチェックをする

SpringMVCで独自Validationチェックを作成します。

独自のバリデーターを作成するには、アノテーションクラスとバリデート(実装)クラスの2つを作成する必要があります。

まず、アノテーションクラスを作成します。

package jp.co.confrage.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;

@Documented
@Constraint(validatedBy = NumberValidator.class)
@Target({ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface NumberValid {
String message() default "0~9の数値のみ入力してください";
Class<?>[] groups() default{};
Class<? extends Payload>[] payload() default{};
}

メッセージ以外は基本的にこの形で記述するものと覚えてよいです。NumberValidatorクラスは実際のバリデートするクラスで、このあと作成します。以下、NumberValidatorクラスです。

package jp.co.confrage.annotation;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class NumberValidator implements ConstraintValidator<NumberValid,String>{

@Override
public void initialize(NumberValid nv){

}

@Override
public boolean isValid(String in,ConstraintValidatorContext cxt){
if(in == null){
return false;
}

return in.matches("[0-9*]");
}
}

アクションフォームに以下のようにアノテーションを追加します。

package jp.co.confrage;

import java.io.Serializable;
import javax.validation.constraints.Min;
import jp.co.confrage.annotation.NumberValid;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.NotEmpty;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class HomeForm implements Serializable {
private static final long serialVersionUID = 1L;
@NotEmpty
private String keyword;
@Min(0)
@NumberValid
private String price;
}

これで独自バリデータが動作します。

SpringMVCで独自Validationチェックをする

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA