首页 > 其他分享 >自定义校验

自定义校验

时间:2022-10-22 15:38:31浏览次数:59  
标签:set 自定义 ListValueConstraintValidator 校验 value class public


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为校验成功

自定义校验_前端

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

 

 

标签:set,自定义,ListValueConstraintValidator,校验,value,class,public
From: https://blog.51cto.com/u_15786786/5785878

相关文章

  • Python Flet 打包后窗口及任务栏图标自定义方法
    最近用Flet写一个应用,写好窗口图标及任务栏中图标默认如下:现在需要将这两个图标改成自定义图标,如下面这样: 经过摸索,方法如下:1、先将应用打包(pyinstaller)2、在打包......
  • 自定义网络
    查看所有的docker网络网络模式网络模式bridge:桥接docker(默认,自己创建也使用bridge模式)none:不配置网络host:和宿主机共享网络container:容器网络连通!(用的少!局限很......
  • Angular2 通过自定义指令限制输入框输入类型
    **温馨提示:如需转载本文,请注明内容出处。**本文链接:https://www.cnblogs.com/grom/p/16814577.html在input控件中,使用type="number"是无法控制科学计数"e"的输入的,并且......
  • ES6迭代器自定义遍历数据
    //声明一个对象constbanji={name:"一班",stus:["xiaobai","xiaohei",......
  • uniapp + h5开发app自定义导航栏高度适配问题
    创建uniapp项目后通过web-view将h5页面嵌入到app中,此刻的uniapp项目相当于一个壳子,所有内容都在h5页面中,通过手机模拟器看到的页面如下:uniapp有自带的头部,h5页面自定义了......
  • Vue3 SFC 和 TSX 方式自定义组件实现 v-model
    1v-model1.1理解v-modelv-model是vue3中的一个内置指令,很多表单元素都可以使用这个属性,如input、checkbox等,咱可以在自定义组件中实现v-model。v-model本质上......
  • 注解-自定义注解的格式和本质
    自定义注解的格式和本质先进入注解看一下注解是如何定义的 上面这两个注解先不管他先看一下是如何写这种注解的格式很简单:public@interface注解名{}public@i......
  • Django自定义URL转换器
    http://127.0.0.1:8000/usernames/zhangsan/count/以上URL请求传递参数username,此username需进行校验,不满足条件,不需要进入视图进行验证,减少数据库调用。可自定义转换......
  • Spring AOP与自定义注解Annotation的使用 实践 @Around("@annotation(operationLog)")
    SpringAOP与自定义注解Annotation的使用AOP,Spring框架的两大核心之一,又称面向切面编程,通过代理模式,对原有的类进行增强。在Spring框架中,AOP有两种动态代理方式,其一是基......
  • 打印自定义行和列的字符
     #include<stdio.h>#pragmawarning(disable :4996)voiddisplay(charcr,intlines,intwidth);intmain() {  intch;  introw,col;  while((c......