package cn.iocoder.yudao.framework.dict.validation; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.dict.core.DictFrameworkUtils; import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; import java.util.List; public class InDictValidator implements ConstraintValidator { private String dictType; @Override public void initialize(InDict annotation) { this.dictType = annotation.type(); } @Override public boolean isValid(Object value, ConstraintValidatorContext context) { // 为空时,默认不校验,即认为通过 if (value == null) { return true; } // 校验通过 final List values = DictFrameworkUtils.getDictDataValueList(dictType); boolean match = values.stream().anyMatch(v -> StrUtil.equalsIgnoreCase(v, value.toString())); if (match) { return true; } // 校验不通过,自定义提示语句 context.disableDefaultConstraintViolation(); // 禁用默认的 message 的值 context.buildConstraintViolationWithTemplate( context.getDefaultConstraintMessageTemplate().replaceAll("\\{value}", values.toString()) ).addConstraintViolation(); // 重新添加错误提示语句 return false; } }