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;
}
これで独自バリデータが動作します。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント