feat: 添加字段校验器
This commit is contained in:
@@ -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();
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user