From bffc39a89fd6ed196031e71cbceefd9986eecce8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 4 Sep 2026 16:13:57 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20EnumPattern=20?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BB=BB=E6=84=8F=E7=B1=BB=E5=9E=8B=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../validate/enums/EnumPatternValidator.java | 40 +++++++++++++++---- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enums/EnumPatternValidator.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enums/EnumPatternValidator.java index 14f15a245..6f0754ca2 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enums/EnumPatternValidator.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enums/EnumPatternValidator.java @@ -1,5 +1,7 @@ package org.dromara.common.core.validate.enums; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.BooleanUtil; import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; import org.dromara.common.core.utils.StringUtils; @@ -14,12 +16,17 @@ import java.util.Set; * @author 秋辞未寒 * @date 2024-12-09 */ -public class EnumPatternValidator implements ConstraintValidator { +public class EnumPatternValidator implements ConstraintValidator { /** * 枚举允许值集合。 */ - private final Set values = new HashSet<>(); + private final Set values = new HashSet<>(); + + /** + * 枚举字段值类型。 + */ + private Class valueType; /** * 初始化枚举允许值集合。 @@ -36,24 +43,43 @@ public class EnumPatternValidator implements ConstraintValidator以枚举字段的实际类型转换输入值后进行比较,可兼容字符串、数字、布尔值等字段类型, + * 同时避免将无法转换的值视为合法值。字符串类型的空白值按未填写处理,其他类型仅 null + * 按未填写处理。

* * @param value 待校验值 * @param constraintValidatorContext 校验上下文 * @return true 校验通过 false 校验失败 */ @Override - public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { - if (StringUtils.isBlank(value)) { + public boolean isValid(Object value, ConstraintValidatorContext constraintValidatorContext) { + if (value == null) { return true; } - return values.contains(value); + if (valueType == null) { + return false; + } + if (value instanceof CharSequence && StringUtils.isBlank(value.toString()) + && CharSequence.class.isAssignableFrom(valueType)) { + return true; + } + if ((valueType == Boolean.class || valueType == boolean.class) && value instanceof CharSequence + && BooleanUtil.toBooleanObject(value.toString()) == null) { + return false; + } + Object convertedValue = Convert.convertWithCheck(valueType, value, null, true); + return convertedValue != null && values.contains(convertedValue); } }