自定义校验

简介: 自定义校验

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 })

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })

@Retention(RUNTIME)


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

245f518db52e4dbf85760af5be015461.png


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


相关文章
|
存储 安全 容灾
无盘软件-真正的折腾鼻祖
无盘软件-真正的折腾鼻祖
|
8月前
|
人工智能 NoSQL Redis
Collaborative Gym:斯坦福人机协作框架开源!异步交互+三方感知,让你的AI学会主动补位
介绍Collaborative Gym,一个专注于人机协作的框架,支持异步交互和多种任务环境。
227 14
Collaborative Gym:斯坦福人机协作框架开源!异步交互+三方感知,让你的AI学会主动补位
|
8月前
|
机器学习/深度学习 人工智能
NeurIPS 2024:收敛速度最高8倍,准确率提升超30%!华科发布MoE Jetpack框架
在NeurIPS 2024会议上,华中科技大学团队发布了MoE Jetpack框架,旨在解决专家混合(MoE)模型训练中的挑战。该框架通过检查点回收和超球面自适应MoE(SpheroMoE)层两项技术,利用预训练密集模型加速收敛并提高准确性。实验表明,MoE Jetpack在视觉任务上显著提升收敛速度(最高8倍)和准确性(超过30%),为MoE模型的实际应用提供了新动力。尽管存在一些限制,如初始权重依赖密集模型及计算资源需求,但该框架大幅降低了MoE模型的训练成本,提升了其可行性。论文地址:https://arxiv.org/abs/2406.04801。
239 45
|
监控 Java API
如何从 Java 程序中查找内存使用情况
【8月更文挑战第22天】
1086 0
|
8月前
|
安全 JavaScript 前端开发
小游戏源码开发之可跨app软件对接是如何设计和开发的
小游戏开发团队常需应对跨平台需求,为此设计了成熟的解决方案。流程涵盖游戏设计、技术选型、接口设计等。首先明确游戏功能与特性,选择合适的技术架构和引擎(如Unity或Cocos2d-x)。接着设计通用接口,确保与不同App的无缝对接,并制定接口规范。开发过程中实现游戏逻辑和界面,完成登录、分享及数据对接功能。最后进行测试优化,确保兼容性和性能,发布后持续维护更新。
|
11月前
|
云安全 弹性计算 安全
带你读《阿里云安全白皮书》(六)—— 公共云安全治理框架
《阿里云安全白皮书(2024版)》介绍了阿里云在云上安全治理框架的设计与建设,涵盖安全机制保障、安全能力支撑、数据主权保护、身份管控与授权、安全防护能力弹性扩展、快速响应与恢复、安全高可用及合规支撑等方面,旨在帮助客户以更低的成本实现更高的安全性。
|
10月前
|
数据采集 人工智能 安全
代理IP与人工智能的融合发展
在科技飞速发展的今天,代理IP与人工智能(AI)正以前所未有的速度融合发展,为网络生活带来巨大变化。代理IP通过隐藏真实IP、绕过网络限制、提高访问速度和增强安全性,为AI系统提供了高效的数据访问方式。AI则通过模拟和扩展人的智能,广泛应用于医疗、金融、交通等领域,提高生产效率和生活质量。两者结合,不仅提升了数据采集、处理和模型训练的效率,还为未来创新和发展带来了无限可能。
196 0
|
11月前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
302 0
|
存储 算法 安全
超级好用的C++实用库之国密sm4算法
超级好用的C++实用库之国密sm4算法
499 0
|
Java 索引
Java系列之 String indexOf() 方法
文章详细介绍了Java中`String`类的`indexOf()`方法的四种不同形式及其用法,包括查找字符和子字符串在字符串中的索引,并提供了相应的实例代码和输出结果。