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

SpringBoot使用自定义校验

文章目录

  • 一、概述
  • 二、使用步骤
    • 自定义注解State
    • 自定义校验数据的类StateValidation实现ConstraintValidator接口
    • 在需要校验的地方使用自定义注解State
  • 三、参考资料


一、概述

已有的注解不能满足所有的校验需求,特殊的情况需要自定义校验(自定义校验注解)
如:文章的state的值只能为已发布或者草稿

二、使用步骤

在这里插入图片描述

自定义注解State

anno/State.java

package com.itheima.anno;import com.itheima.validation.StateValidation;import java.lang.annotation.Target;import static java.lang.annotation.ElementType.FIELD;@java.lang.annotation.Documented    //元注解
@Target({FIELD})    // 元注解,使用在字段上
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)   // 作用于运行时
@jakarta.validation.Constraint(validatedBy = {StateValidation.class})   // 指定校验规则的类
public @interface State {//提供默认的错误消息java.lang.String message() default "{stage参数的值只能是已发布或者草稿}";//指定分组java.lang.Class<?>[] groups() default {};//负载,获取State注解的附加信息java.lang.Class<? extends jakarta.validation.Payload>[] payload() default {};
}

自定义校验数据的类StateValidation实现ConstraintValidator接口

validation/StateValidation.java

package com.itheima.validation;import com.itheima.anno.State;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;public class StateValidation implements ConstraintValidator<State, String> {/*** 校验方法* @param value 将来要校验的数据* @param context* @return 返回false不通过,返回true通过*/@Overridepublic boolean isValid(String value, ConstraintValidatorContext context) {//提供校验规则if ("已发布".equals(value) || "草稿".equals(value)){return true;}return false;}
}

在需要校验的地方使用自定义注解State

在这里插入图片描述

三、参考资料

https://www.bilibili.com/video/BV14z4y1N7pg?spm_id_from=333.788.player.switch&vd_source=0467ab39cc5ec5940fee22a0e7797575&p=33

相关文章:

  • flux_train_network的参数
  • unity webgl netbox2本地部署打开运行
  • cpper 转 java
  • 数据中台笔记01
  • HCL(HashiCorp Configuration Language)是一种结构化配置语言
  • 组件通信-$refs、$parent
  • Linux-06-磁盘分区类命令
  • 高等数学-第七版-下册 选做记录 习题10-1
  • 邹晓辉教授十余年前关于围棋程序与融智学的思考,体现了对复杂系统本质的深刻洞察,其观点在人工智能发展历程中具有前瞻性意义。我们可以从以下三个维度进行深入解析:
  • 前端面试每日三题 - Day 22
  • 英伟达黄仁勋推荐的深度学习教程
  • aab转apk
  • 【Linux系统】进程间信号(捕捉信号)
  • 6.11.各顶点间的最短路径问题-Floyd算法
  • Redis基本使用
  • Git 基本操作(二)
  • AimRT从入门到精通 - 01实现一个helloworld
  • FHQ Treap
  • AI作画提示词:Prompts工程技巧与最佳实践
  • MYSQL-设计表
  • 党旗下的青春|赵天益:少年确定志向,把最好的时光奉献给戏剧事业
  • 2024年境内酒店住宿行业指标同比下滑:酒店行业传统增长模式面临挑战
  • 澎湃读报丨央媒头版头条集中刊发:大国应有的样子
  • 贵州锦屏县委原书记舒健已任黔东南州政府办主任
  • 前行中的“模速空间”:要攻克核心技术,也要成为年轻人创业首选地
  • 夜读丨春天要去动物园