ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPattern.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPatternValidator.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPattern.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,48 @@ package org.dromara.common.core.validate.enumd; import jakarta.validation.Constraint; import jakarta.validation.Payload; import java.lang.annotation.*; import static java.lang.annotation.ElementType.*; import static java.lang.annotation.RetentionPolicy.RUNTIME; /** * èªå®ä¹æä¸¾æ ¡éª * * @author ç§è¾æªå¯ * @date 2024-12-09 */ @Documented @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE}) @Retention(RUNTIME) @Repeatable(EnumPattern.List.class) // å 许å¨åä¸å ç´ ä¸å¤æ¬¡ä½¿ç¨è¯¥æ³¨è§£ @Constraint(validatedBy = {EnumPatternValidator.class}) public @interface EnumPattern { /** * éè¦æ ¡éªçæä¸¾ç±»å */ Class<? extends Enum> type() default Enum.class; /** * æä¸¾ç±»åæ ¡éªå¼å段åç§° * TODO éç¡®ä¿è¯¥å段å®ç°äº getter æ¹æ³ */ String fieldName() default "code"; String message() default "è¾å ¥å¼ä¸å¨æä¸¾èå´å "; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; @Documented @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE}) @Retention(RUNTIME) @interface List { EnumPattern[] value(); } } ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPatternValidator.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,45 @@ 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; import lombok.extern.slf4j.Slf4j; /** * èªå®ä¹æä¸¾æ ¡éªæ³¨è§£å®ç° * * @author ç§è¾æªå¯ * @date 2024-12-09 */ public class EnumPatternValidator implements ConstraintValidator<EnumPattern, String> { private EnumPattern annotation;; @Override public void initialize(EnumPattern annotation) { ConstraintValidator.super.initialize(annotation); this.annotation = annotation; } @Override public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { try { if (StringUtils.isNotBlank(value)) { Class<?> type = annotation.type(); String fieldName = annotation.fieldName(); Object[] enumConstants = type.getEnumConstants(); for (Object e : enumConstants) { if (value.equals(ReflectUtils.invokeGetter(e, fieldName))) { return true; } } } return false; } catch (Exception e) { throw new ValidationException(e); } } }