【SpringBoot实战】Spring Validation自定义校验

已有的注解不能满足所有的校验需求,特殊的情况需要自定义校验(自定义校验注解)

  • 自定义注解state
    • 建包anno
      • 建State (Annotation)
package walker.anno;

import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.*;

@Documented// 元注解
@Target({ElementType.FIELD})// 元注解
@Retention(RetentionPolicy.RUNTIME)// 元注解
@Constraint(validatedBy = {StateValidation.class}) // 指定提供校验规则的类
public @interface State {
	// 提供校验失败后的提示信息
	String message() default "state参数的值只能是已发布或者草稿";

	// 指定分组
	Class<?>[] groups() default {};

	// 负载 获取到State注解的附加信息
	Class<? extends Payload>[] payload() default {};
}
  • 自定义校验数据的类StateValidation 实现ConstraintValidator接口
    • 建包validation
      • 建StateValidation类
package walker.validation;

import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
import walker.anno.State;

// <给那个注解提供校验规则,校验的数据类型>
public class StateValidation implements ConstraintValidator<State, String> {

	/**
	 *
	 * @param value  将来要校验的数据
	 * @param context
	 * @return false , 校验不通过
	 */
	@Override
	public boolean isValid(String value, ConstraintValidatorContext context) {
		// 提供校验规则
		if (value == null) {
			return false;
		}
		if (value.equals("已发布") || value.equals("草稿")) {
			return true;
		}
		return false;
	}
}
  • 在需要校验的地方使用自定义注解
    @State
    private String state;//发布状态 已发布|草稿
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值