0
点赞
收藏
分享

微信扫一扫

自定义校验


1)编写一个指定要的校验注解

@Documented
@Constraint(validatedBy = { ListValueConstraintValidator.class })
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
public @interface ListValue {
String message() default "{com.atguigu.common.valid.ListValue.message}";

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

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

int[] vals() default { };
}

@Documented @Constraint(validatedBy = { ListValueConstraintValidator.class })

2)编写一个指定要的校验器

public class ListValueConstraintValidator implements ConstraintValidator<ListValue,Integer> {

private Set<Integer> set = new HashSet<>();
//初始化方法
@Override
public void initialize(ListValue constraintAnnotation) {

int[] vals = constraintAnnotation.vals();
for (int val : vals) {
set.add(val);
}

}

//判断是否校验成功

/**
*
* @param value 需要校验的值
* @param context
* @return
*/
@Override
public boolean isValid(Integer value, ConstraintValidatorContext context) {

return set.contains(value);
}
}

3)关联指定要的校验器和自定义的校验的注解

@Constraint(validatedBy = { ListValueConstraintValidator.class })

@Constraint(validatedBy = { ListValueConstraintValidator.class }) 

  //判断是否校验成功

    /**
     *
     * @param value 需要校验的值
     * @param context
     * @return
     */
    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext context) {

        return set.contains(value);
    }

 返回false为校验失败

true为校验成功

自定义校验_java

com.atguigu.common.valid.ListValue.message=必须提交指定的值

 

 

举报

相关推荐

0 条评论