参数校验

This commit is contained in:
2025-04-30 10:18:18 +08:00
parent dc090de5ab
commit 99e002f054
12 changed files with 144 additions and 34 deletions

View File

@ -1,28 +1,22 @@
package com.greenorange.promotion.annotation;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.Arrays;
import com.greenorange.promotion.model.enums.UserRoleEnum;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
// 枚举校验器
public class EnumValidator implements ConstraintValidator<EnumValue, String> {
private EnumValue enumValue;
@Override
public void initialize(EnumValue constraintAnnotation) {
this.enumValue = constraintAnnotation;
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if (value == null) {
return true; // 如果值为 null跳过校验可以用 @NotNull 另行校验
}
// 获取枚举类
Class<? extends Enum<?>> enumClass = enumValue.enumClass();
return Arrays.stream(enumClass.getEnumConstants())
.anyMatch(enumConstant -> enumConstant.name().equals(value));
return UserRoleEnum.getEnumByValues(value) != null;
}
}

View File

@ -1,7 +1,8 @@
package com.greenorange.promotion.annotation;
import javax.validation.Constraint;
import javax.validation.Payload;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;