diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPattern.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPattern.java index 2f7de7550..35f7ecbe3 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPattern.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPattern.java @@ -21,7 +21,15 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Constraint(validatedBy = {EnumPatternValidator.class}) public @interface EnumPattern { - Class type() default ValidateEnum.class; + /** + * 需要校验的枚举类型 + */ + Class type() default Enum.class; + + /** + * 枚举类型校验值判断方法 + */ + String method() default "getCode"; String message() default "输入值不在枚举范围内"; diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPatternValidator.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPatternValidator.java index 451dc71a7..af87225a6 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPatternValidator.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPatternValidator.java @@ -1,6 +1,7 @@ package org.dromara.common.core.validate.enumd; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.core.utils.reflect.ReflectUtils; import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; import jakarta.validation.ValidationException; @@ -26,10 +27,11 @@ public class EnumPatternValidator implements ConstraintValidator type = annotation.type(); - ValidateEnum[] constants = type.getEnumConstants(); - for (ValidateEnum e : constants) { - if (e.validate(value)) { + Class type = annotation.type(); + Object[] enumConstants = type.getEnumConstants(); + Method method = ReflectUtils.getMethod(type, annotation.method()); + for (Object e : enumConstants) { + if (value.equals(method.invoke(e))) { return true; } }