springboot3+vue3融合项目实战-大事件文章管理系统-自定义校验
新建state注解
package com.itheima.anno;import com.itheima.validation.StateValidation;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;import java.lang.annotation.*;@Documented//元注解
@Constraint(validatedBy = {StateValidation.class}//指定提供校验规则的类
)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})//元注解
@Retention(RetentionPolicy.RUNTIME)//元注解public @interface State {//提供校验失败后的提示信息String message() default "state参数的值只能是已发布或者草稿";//配置分组Class<?>[] groups() default {};//负载 获取到state注解的附加信息Class<? extends Payload>[] payload() default {};
}
新建statevalidatation类
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 s 将来要校验的数据* @param constraintValidatorContext* @return 如果返回false,校验不通过*/@Overridepublic boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {//提供校验规则if (s == null){return false;}if ("已发布".equals(s) || "草稿".equals(s)){return true;}return false;}
}
最后在article里面的state属性上面添加@state注解就好了