任务管理查询修改
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
package com.sdm.common.validator.annotation;
|
||||
|
||||
import com.sdm.common.validator.validator.EnumValueValidator;
|
||||
import jakarta.validation.Constraint;
|
||||
import jakarta.validation.Payload;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Target({ElementType.FIELD, ElementType.PARAMETER})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Constraint(validatedBy = EnumValueValidator.class)
|
||||
public @interface EnumValue {
|
||||
String message() default "无效的枚举值";
|
||||
Class<?>[] groups() default {};
|
||||
Class<? extends Payload>[] payload() default {};
|
||||
Class<? extends Enum<?>> enumClass();
|
||||
String enumMethod() default "isValid";
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.sdm.common.validator.validator;
|
||||
|
||||
import com.sdm.common.validator.annotation.EnumValue;
|
||||
import jakarta.validation.ConstraintValidator;
|
||||
import jakarta.validation.ConstraintValidatorContext;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
public class EnumValueValidator implements ConstraintValidator<EnumValue, Object> {
|
||||
|
||||
private Class<? extends Enum<?>> enumClass;
|
||||
private String enumMethod;
|
||||
|
||||
@Override
|
||||
public void initialize(EnumValue constraintAnnotation) {
|
||||
enumClass = constraintAnnotation.enumClass();
|
||||
enumMethod = constraintAnnotation.enumMethod();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValid(Object value, ConstraintValidatorContext context) {
|
||||
if (value == null) {
|
||||
return true;
|
||||
}
|
||||
try {
|
||||
// 通过反射调用枚举的校验方法
|
||||
Method method = enumClass.getMethod(enumMethod, value.getClass());
|
||||
Boolean result = (Boolean) method.invoke(null, value);
|
||||
return result != null && result;
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user