秋辞未寒
2024-12-09 9009a90ef27754a81ba86932663d33e176942d4e
update 更新 枚举校验通过获取枚举值,不再需要实现接口

Signed-off-by: 秋辞未寒 <545073804@qq.com>
已修改2个文件
20 ■■■■ 文件已修改
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPattern.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPatternValidator.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPattern.java
@@ -21,7 +21,15 @@
@Constraint(validatedBy = {EnumPatternValidator.class})
public @interface EnumPattern {
    Class<? extends ValidateEnum> type() default ValidateEnum.class;
    /**
     * 需要校验的枚举类型
     */
    Class<? extends Enum> type() default Enum.class;
    /**
     * 枚举类型校验值判断方法
     */
    String method() default "getCode";
    String message() default "输入值不在枚举范围内";
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 boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
        try {
            if (StringUtils.isNotBlank(value)) {
                Class<? extends ValidateEnum> 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;
                    }
                }