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