JSR303自定义校验注解
自定义校验
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自定义校验注解相关推荐
- Spring 使用 JSR303自定义校验注解+分组校验
我们有这样一个需求,想要校验一个int类型的变量,校验它的值必须为我们所指定的值,且在修改状态分组时生效. @ListValue(vals = {0, 1}, groups = {UpdateStat ...
- element form自定义校验_SpringBoot分组校验及自定义校验注解
前言 在日常的开发中,参数校验是非常重要的一个环节,严格参数校验会减少很多出bug的概率,增加接口的安全性.在此之前写过一篇SpringBoot统一参数校验主要介绍了一些简单的校验方法.而这篇则是 ...
- Java 校验注解的使用、自定义校验注解
文章目录 一.引入依赖 二.基本校验 1. 常用校验注解 2. 自动校验 3. 代码中获取校验结果 三.嵌套校验 四.分组校验 五.单属性自定义校验规则 1. 功能:只能取枚举的值 六.多属性自定义联 ...
- 基于Spring Validation自定义校验注解
常用的原生校验注解有: @NotNull 所有对象判空 @NotBlank 字符串判空 @NotEmpty 集合判空 自定义校验注解实现方式: 引入依赖 如果spring-boot版本小于2.3.x, ...
- Spring MVC代码实例系列-06:Spring MVC配置Hibernate-Validator以及自定义校验注解
超级通道 :Spring MVC代码实例系列-绪论 本章主要记录,如何在Spring MVC中添加Hibernate-Validator以及自定义校验注解.本章主要涉及的技术点有: javax.val ...
- java自定义校验注解
前言 在日常的开发中可能会对手机号.邮箱.身份证号的合法性进行校验,然而每次使用if语句调用校验函数进行校验又显得过于麻烦,这时候自定义校验注解用处就很大了.此文编写一个对应0,1值的校验. 1.引入 ...
- validator自定义校验注解及使用
validator自定义校验注解及使用 官方文档:https://docs.jboss.org/hibernate/validator/8.0/reference/en-US/html_single/ ...
- jsr-303 参数校验—自定义校验注解
1.为什么要自定义? 通过上篇学习,了解到很多常用注解了,但是呢,总是有那么些需求.... 2.案例分析(手机号格式) 2.1.需要验证的实体 Bean public class LoginVo {@ ...
- java 注解校验_Java开发编写自定义校验注解和校验器
自定义校验 1).编写一个自定义的校验注解 2).编写一个自定义的校验器 ConstraintValidator 3).关联自定义的校验器和自定义的校验注解 * @Documented * @Cons ...
最新文章
- ASP.NET MVC 5 入门指南汇总
- 如何阅读一本书 pdf_如何2个小时内快速阅读一本书?
- Leetcode 560. Subarray Sum Equals K
- 三相pmsm矢量控制仿真模型_学术|基于新型滑模观测器的永磁同步电机无传感器矢量控制系统...
- nutz 自定义sql的使用
- Java开发者必须掌握的15个框架
- MySQL · 案例分析 · RDS MySQL线上实例insert慢常见原因分析
- Nginx 实现封杀恶意访问
- 异常:Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.Properties
- CodeForces - 1612A Distance
- HP打印机自动双面打印故障排除
- 电子类经典书籍汇总(转 )
- 用友U8打开起初采购入库单报错
- OpenCasCade——给定B样条曲线上的一点,求出过该点的切向量或法向量
- 51单片机简易MP3程序驱动蜂鸣器播放
- 微信公众号采集之免费采集公众号爆文工具
- 霍尔 磁电 光电式传感器的比较 实验思考题
- python运行环境搭建以及常见问题解决
- 清空了回收站的文件还能找回吗
- vim 删除当前词_键盘快捷键 - 在VIM中的光标之后或周围删除单词