我正在尝试做我的第一个自定义验证器。我定义了我的注释:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = PojoValidator.class)
@Documented
public @interface Pojo {
String message() default "invalid pojo";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
在网上的许多教程中,我在声明的最后看到了类似的内容:
@Target({ElementType.METHOD,
ElementType.FIELD,
ElementType.ANNOTATION_TYPE,
ElementType.CONSTRUCTOR,
ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@interface List {
Email[] value();
}
这个@interface List
的目的是什么,如何在我的例子中写出它是强制性的?
答案 0 :(得分:1)
在Java 1.7中,您不能拥有相同类型的多个注释。围绕这个的方式是List。假设您有一个类级验证,以检查2个字段是否相等,并且您想要使用它两次(例如,验证passwd = repeatPasswd和email = repeatEmail:
@ValidateEquals.List({
@ValidateEquals(field1 = "pwd", field2="repPwd"),
@ValidateEquals(field1 = "email", field2="repEmail")
})
public class MyForm
不确定它是否是强制性的,但强烈建议用于类级验证器。