From 6b65644d9e3c058bbe88926b3d064147a388d41a Mon Sep 17 00:00:00 2001 From: haoxr <1490493387@qq.com> Date: Tue, 19 Nov 2024 00:01:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boot/core/annotation/ValidField.java | 28 ++++++++++++++++ .../boot/core/validator/FieldValidator.java | 33 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 src/main/java/com/youlai/boot/core/annotation/ValidField.java create mode 100644 src/main/java/com/youlai/boot/core/validator/FieldValidator.java diff --git a/src/main/java/com/youlai/boot/core/annotation/ValidField.java b/src/main/java/com/youlai/boot/core/annotation/ValidField.java new file mode 100644 index 00000000..e9ce5f00 --- /dev/null +++ b/src/main/java/com/youlai/boot/core/annotation/ValidField.java @@ -0,0 +1,28 @@ +package com.youlai.boot.core.annotation; + + +import com.youlai.boot.core.validator.FieldValidator; +import jakarta.validation.Constraint; +import jakarta.validation.Payload; + +import java.lang.annotation.*; + +@Documented +@Constraint(validatedBy = FieldValidator.class) +@Target({ElementType.FIELD, ElementType.PARAMETER}) +@Retention(RetentionPolicy.RUNTIME) +public @interface ValidField { + + + String message() default "非法字段"; + + Class[] groups() default {}; + + Class[] payload() default {}; + + /** + * 允许的字段值 + */ + String[] allowedValues(); + +} diff --git a/src/main/java/com/youlai/boot/core/validator/FieldValidator.java b/src/main/java/com/youlai/boot/core/validator/FieldValidator.java new file mode 100644 index 00000000..3872d303 --- /dev/null +++ b/src/main/java/com/youlai/boot/core/validator/FieldValidator.java @@ -0,0 +1,33 @@ +package com.youlai.boot.core.validator; + +import com.youlai.boot.core.annotation.ValidField; +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; + +import java.util.Arrays; + +/** + * 字段校验器 + * + * @author Ray.Hao + * @since 2024/11/18 + */ +public class FieldValidator implements ConstraintValidator { + + private String[] allowedValues; + + @Override + public void initialize(ValidField constraintAnnotation) { + // 初始化允许的值列表 + this.allowedValues = constraintAnnotation.allowedValues(); + } + + @Override + public boolean isValid(String value, ConstraintValidatorContext context) { + if (value == null) { + return true; // 如果字段允许为空,可以返回 true + } + // 检查值是否在允许列表中 + return Arrays.asList(allowedValues).contains(value); + } +}