mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 10:18:42 +08:00 
			
		
		
		
	common: 增加InEnumCollectionValidator,用于校验枚举值列表参数的取值范围是否有䇅
This commit is contained in:
		| @@ -17,7 +17,7 @@ import java.lang.annotation.*; | |||||||
| @Retention(RetentionPolicy.RUNTIME) | @Retention(RetentionPolicy.RUNTIME) | ||||||
| @Documented | @Documented | ||||||
| @Constraint( | @Constraint( | ||||||
|         validatedBy = InEnumValidator.class |         validatedBy = {InEnumValidator.class, InEnumCollectionValidator.class} | ||||||
| ) | ) | ||||||
| public @interface InEnum { | public @interface InEnum { | ||||||
|  |  | ||||||
|   | |||||||
| @@ -0,0 +1,42 @@ | |||||||
|  | package cn.iocoder.yudao.framework.common.validation; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.collection.CollUtil; | ||||||
|  | import cn.iocoder.yudao.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; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user
	 owen
					owen