自定义校验
1)、编写一个自定义的校验注解
2)、编写一个自定义的校验器 ConstraintValidator
3)、关联自定义的校验器和自定义的校验注解*      @Documented* @Constraint(validatedBy = { ListValueConstraintValidator.class【可以指定多个不同的校验器,
适配不同类型的校验】 })* @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })* @Retention(RUNTIME)* public @interface ListValue {
/*** 显示状态[0-不显示;1-显示]*/
@NotNull(groups = {AddGroup.class, UpdateStatusGroup.class})
@ListValue(vals={0,1},groups = {AddGroup.class, UpdateStatusGroup.class})
private Integer showStatus;
package com.leon.common.valid;import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;@Documented
@Constraint(validatedBy = { ListValueConstraintValidator.class })
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
public @interface ListValue {String message() default "{com.leon.common.valid.ListValue.message}";Class<?>[] groups() default { };Class<? extends Payload>[] payload() default { };int[] vals() default { };
}
package com.leon.common.valid;import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.HashSet;
import java.util.Set;public class ListValueConstraintValidator implements ConstraintValidator<ListValue,Integer> {private Set<Integer> set = new HashSet<>();//初始化方法@Overridepublic void initialize(ListValue constraintAnnotation) {int[] vals = constraintAnnotation.vals();for (int val : vals) {set.add(val);}}//判断是否校验成功/**** @param value 需要校验的值* @param context* @return*/@Overridepublic boolean isValid(Integer value, ConstraintValidatorContext context) {return set.contains(value);}
}

JSR303自定义校验注解相关推荐

  1. Spring 使用 JSR303自定义校验注解+分组校验

    我们有这样一个需求,想要校验一个int类型的变量,校验它的值必须为我们所指定的值,且在修改状态分组时生效. @ListValue(vals = {0, 1}, groups = {UpdateStat ...

  2. element form自定义校验_SpringBoot分组校验及自定义校验注解

    前言   在日常的开发中,参数校验是非常重要的一个环节,严格参数校验会减少很多出bug的概率,增加接口的安全性.在此之前写过一篇SpringBoot统一参数校验主要介绍了一些简单的校验方法.而这篇则是 ...

  3. Java 校验注解的使用、自定义校验注解

    文章目录 一.引入依赖 二.基本校验 1. 常用校验注解 2. 自动校验 3. 代码中获取校验结果 三.嵌套校验 四.分组校验 五.单属性自定义校验规则 1. 功能:只能取枚举的值 六.多属性自定义联 ...

  4. 基于Spring Validation自定义校验注解

    常用的原生校验注解有: @NotNull 所有对象判空 @NotBlank 字符串判空 @NotEmpty 集合判空 自定义校验注解实现方式: 引入依赖 如果spring-boot版本小于2.3.x, ...

  5. Spring MVC代码实例系列-06:Spring MVC配置Hibernate-Validator以及自定义校验注解

    超级通道 :Spring MVC代码实例系列-绪论 本章主要记录,如何在Spring MVC中添加Hibernate-Validator以及自定义校验注解.本章主要涉及的技术点有: javax.val ...

  6. java自定义校验注解

    前言 在日常的开发中可能会对手机号.邮箱.身份证号的合法性进行校验,然而每次使用if语句调用校验函数进行校验又显得过于麻烦,这时候自定义校验注解用处就很大了.此文编写一个对应0,1值的校验. 1.引入 ...

  7. validator自定义校验注解及使用

    validator自定义校验注解及使用 官方文档:https://docs.jboss.org/hibernate/validator/8.0/reference/en-US/html_single/ ...

  8. jsr-303 参数校验—自定义校验注解

    1.为什么要自定义? 通过上篇学习,了解到很多常用注解了,但是呢,总是有那么些需求.... 2.案例分析(手机号格式) 2.1.需要验证的实体 Bean public class LoginVo {@ ...

  9. java 注解校验_Java开发编写自定义校验注解和校验器

    自定义校验 1).编写一个自定义的校验注解 2).编写一个自定义的校验器 ConstraintValidator 3).关联自定义的校验器和自定义的校验注解 * @Documented * @Cons ...

最新文章

  1. ASP.NET MVC 5 入门指南汇总
  2. 如何阅读一本书 pdf_如何2个小时内快速阅读一本书?
  3. Leetcode 560. Subarray Sum Equals K
  4. 三相pmsm矢量控制仿真模型_学术|基于新型滑模观测器的永磁同步电机无传感器矢量控制系统...
  5. nutz 自定义sql的使用
  6. Java开发者必须掌握的15个框架
  7. MySQL · 案例分析 · RDS MySQL线上实例insert慢常见原因分析
  8. Nginx 实现封杀恶意访问
  9. 异常:Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.Properties
  10. CodeForces - 1612A Distance
  11. HP打印机自动双面打印故障排除
  12. 电子类经典书籍汇总(转 )
  13. 用友U8打开起初采购入库单报错
  14. OpenCasCade——给定B样条曲线上的一点,求出过该点的切向量或法向量
  15. 51单片机简易MP3程序驱动蜂鸣器播放
  16. 微信公众号采集之免费采集公众号爆文工具
  17. 霍尔 磁电 光电式传感器的比较 实验思考题
  18. python运行环境搭建以及常见问题解决
  19. 清空了回收站的文件还能找回吗
  20. vim 删除当前词_键盘快捷键 - 在VIM中的光标之后或周围删除单词

热门文章

  1. 项目管理工具篇(一、Maven)
  2. VS VC 读取 INI文件
  3. [NowCoder] 牛牛数星星
  4. 命令行隐藏磁盘驱动器
  5. apt-mirror 校验错误文件处理
  6. Android随机生成四则运算
  7. Java异常之try,catch,finally,throw,throws
  8. Boost智能指针——weak_ptr
  9. 在JSP页面中使用Ajax主题时的引入
  10. Linux之字符串截取