1 回答

TA贡献1906条经验 获得超3个赞
没有直接验证该字段的注释。自定义注释的想法@URL
是完全有效的,但您必须自己实现验证 - 注释只是“应该发生的事情”的标记。
我建议你重命名@URL
为@URLCollection
以避免与类冲突java.net.URL
。从定义注释开始。不要忘记注解@Constraint
(查看其文档以了解如何正确定义自定义验证注解):
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = UrlCollectionValidator.class) // will be created below
public @interface URLCollection {
String message() default "default error message";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
然后继续执行ConstraintValidator:
public class UrlCollectionValidator implements ConstraintValidator<URLCollection, Collection<String>> {
@Override
public void initialize(URLCollectionconstraint) { }
@Override
public boolean isValid(Collection<String> urls, ConstraintValidatorContext context) {
return // the validation logics
}
}
嗯,就是这样。在 Spring 文档中的配置自定义约束中阅读有关此内容的更多信息:
每个 bean 验证约束由两部分组成: *@Constraint声明约束及其可配置属性的注释。* 实现javax.validation.ConstraintValidator约束行为的接口的实现。
添加回答
举报