您的位置:首页 > 编程语言 > Java开发

9. SpringMVC 数据验证例子2 - 自定义数据验证规则

2016-03-08 12:38 447 查看
本系列入门学习参考极客学院Spring入门系列视频学习记录总结而来

继续沿用SpringMVC数据验证例子1中的代码,添加自定义注解类实现自定义验证规则

自定义一个Betweent注解类:

import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import javax.validation.Constraint;
import javax.validation.Payload;

/**
* 新建自定义验证规则注解类
* 验证年龄范围
*/
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {BetweenValidator.class})
public @interface Between {

String message() default "年龄必须在{min}和{max}之间";

Class<?>[] groups() default { };

Class<? extends Payload>[] payload() default {};

int min();

int max();

}


实现BetweenValidator类:

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

/**
* 自定义数据验证注解实现类
* 实现ConstraintValidator接口
*/
public class BetweenValidator implements ConstraintValidator<Between, Integer>{

private int min ;
private int max ;

@Override
public void initialize(Between annotation) {
min = annotation.min();
max = annotation.max();
}

@Override
public boolean isValid(Integer value, ConstraintValidatorContext context) {
if (value == null) {
return false;
}
if (value >= min && value <= max) {
return true;
}
return false;
}

}


修改JavaBean中age属性的注解:

@Between(min = 18 , max = 60)
@NotNull(message = "不能为空")
private Integer age ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mvc