feat: 添加字段校验器

This commit is contained in:
haoxr
2024-11-19 00:01:28 +08:00
parent 2c42e47ae0
commit 6b65644d9e
2 changed files with 61 additions and 0 deletions

View File

@@ -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<? extends Payload>[] payload() default {};
/**
* 允许的字段值
*/
String[] allowedValues();
}

View File

@@ -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<ValidField, String> {
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);
}
}