对比新文件 |
| | |
| | | package com.iailab.framework.common.validation; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import com.iailab.framework.common.core.IntArrayValuable; |
| | | |
| | | import javax.validation.ConstraintValidator; |
| | | import javax.validation.ConstraintValidatorContext; |
| | | import java.util.Arrays; |
| | | import java.util.Collection; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | public class InEnumCollectionValidator implements ConstraintValidator<InEnum, Collection<Integer>> { |
| | | |
| | | private List<Integer> values; |
| | | |
| | | @Override |
| | | public void initialize(InEnum annotation) { |
| | | IntArrayValuable[] values = annotation.value().getEnumConstants(); |
| | | if (values.length == 0) { |
| | | this.values = Collections.emptyList(); |
| | | } else { |
| | | this.values = Arrays.stream(values[0].array()).boxed().collect(Collectors.toList()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public boolean isValid(Collection<Integer> list, ConstraintValidatorContext context) { |
| | | // 校验通过 |
| | | if (CollUtil.containsAll(values, list)) { |
| | | return true; |
| | | } |
| | | // 校验不通过,自定义提示语句(因为,注解上的 value 是枚举类,无法获得枚举类的实际值) |
| | | context.disableDefaultConstraintViolation(); // 禁用默认的 message 的值 |
| | | context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate() |
| | | .replaceAll("\\{value}", CollUtil.join(list, ","))).addConstraintViolation(); // 重新添加错误提示语句 |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | |