java - 如何将自定义注释应用于列表?
问题描述
我创建了一个注释以验证字符串字段的值(如枚举):
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = GenericStringSetValidator.class)
public @interface ValidStringValue {
String message() default "Must be a valid value. Found: ${validatedValue}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
String[] values() default {};
}
以及注释使用的 GenericStringSetValidator :
public class GenericStringSetValidator implements ConstraintValidator<ValidStringValue, String> {
private Set<String> validValues;
@Override
public void initialize(ValidStringValue constraint) {
validValues = Arrays.stream(constraint.values())
.collect(toSet());
}
@Override
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
if (value == null) return false;
return validValues.contains(value);
}
}
我已经在以下课程中使用它,没有任何麻烦:
public class SampleClass{
private String id;
@ValidStringValue(values = {"IN_PROGRESS", "COMPLETED", "DELETED"})
private String status;
}
但我也想在其他类中使用它List<String>
来验证List
. 是否可以配置我的ValidStringValue
界面以使其在 aString
和 a上可用List<String>
?
public class SampleClassWithList{
private String id;
@ValidStringValue(values = {"A", "B", "C"})
private List<String> sampleList;
}
非常感谢你的帮助 :)
解决方案
推荐阅读
- java - 一起移动物体
- c# - ASP.Net Core 3.1 剃须刀页面显示员工列表错误
- python - 列表中的不同对象需要线程锁?
- typescript - 所需项目的打字稿数组
- spring - spring security 如何为不同的请求路径设置不同的过滤器?
- php - Laravel - 表单选择日期 - 只允许用户在从数据库发送的两个日期之间进行选择
- singularity-container - 主机文件系统对奇点容器可见
- oracle - Oracle Reports:我可以在一个报表中根据查询使用多个图像吗?
- python - pyqt5:将函数移动到另一个文件,然后每隔 X 秒用 qtimer 调用它
- javascript - 如何解决多个异步请求期间刷新 api 令牌的竞争条件?