当前位置: 首页 > news >正文

@Validation 的自定义校验实现, Spring Boot 和 java

参考 NotEmpty.class的内容:

package jakarta.validation.constraints;import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Documented
@Constraint(validatedBy = {}
)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(List.class)
public @interface NotEmpty {String message() default "{jakarta.validation.constraints.NotEmpty.message}";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface List {NotEmpty[] value();}
}

生成自定义规则

创建包, annotation 

创建类

@Documented
@Constraint(validatedBy = {}
)
@Target({FIELD})
@Retention(RUNTIME)
public @interface State {// 错误提示String message() default STATE_VALIDATION_ERROR;Class<?>[] groups() default {};// 负载,获得 state 附加信息 —— 大部分情况下不需要处理Class<? extends Payload>[] payload() default {};}

说明: @Target 是使用范围

创建包, validation 

创建类

public class StateValidation implements ConstraintValidator<State, String> {@Overridepublic void initialize(State constraintAnnotation) {ConstraintValidator.super.initialize(constraintAnnotation);}@Overridepublic boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {return false;}
}

类,要继承一个接口 ;并且声明泛型 —— 

ConstraintValidator<(给那个注解提供校验规则)State, (校验的数据类型)String> 

类是 State ,见上面的 创建类 。

校验规则如下

public class StateValidation implements ConstraintValidator<State, String> {/**** @param s 被校验的数据* @param constraintValidatorContext* @return  false 校验失败 ; true 校验通过 */@Overridepublic boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {// 校验规则if (s == null) {return false;}if (s.equals("校验的value")) {return true;}return false;}
}

最后,给 state 提供校验规则的类

参见: validatedBy = {StateValidation.class} 

@Documented
@Constraint(validatedBy = {StateValidation.class} // 校验规则的类
)
@Target({FIELD})
@Retention(RUNTIME)
public @interface State {

相关文章:

  • 算法学习笔记:3.广度优先搜索 (BFS)——二叉树的层序遍历
  • 探索现代 Web 开发:从 HTML5 到 Vue.js 的全栈之旅
  • 一致性hash
  • LINUX613计划测put
  • ubuntu调整硬盘大小-使用gparted
  • CRaxsRat v7.6 安装与使用教程(附工具下载)
  • 一文讲清网络变压器、芯片和 RJ45 之间的接线
  • OSPF基础实验案例
  • 利用DeepSeek将docx生成程序迁移至minidocx
  • 前端开发中的可访问性设计:让互联网更包容
  • 快递接口调用选择:快递鸟、快递100、阿里云大对比
  • 上海市计算机学会竞赛平台2022年4月月赛丙组圆环独立集(一)
  • 开发者视角的网络调试流程进化:抓包工具实践指南与Sniffmaster使用笔记
  • Docker Buildx 简介与安装指南
  • 在C#中的乐观锁和悲观锁
  • 智能出入库管理系统:自动化管控平台
  • 高级定时器TIM1、TIM8
  • AD工程面板拖动以及固定位置
  • AWS WebRTC:通过shell实现多进程启动master
  • AWS知识点和技术面试模拟题
  • 工业设计公司怎么收费/北京seo代理公司
  • wordpress一键搭建/网站关键字优化价格
  • WordPress腾讯云短信插件/seo站内优化最主要的是什么
  • 武汉seo网站排名/快手seo软件下载
  • 中国住房和城乡建设部网站首页/黄石市seo关键词优化怎么做
  • 宁晋县建设局网站/软件推广方案经典范文