Eri*_* B. 9 java validation annotations hibernate spring-validator
我在看@org.hibernate.validator.constaints.NotEmpty注释:
@Documented
@Constraint(validatedBy = { })
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@ReportAsSingleViolation
@NotNull
@Size(min = 1)
public @interface NotEmpty {
String message() default "{org.hibernate.validator.constraints.NotEmpty.message}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
/**
* Defines several {@code @NotEmpty} annotations on the same element.
*/
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
public @interface List {
NotEmpty[] value();
}
}
Run Code Online (Sandbox Code Playgroud)
我对最后一部分感到困惑:
/**
* Defines several {@code @NotEmpty} annotations on the same element.
*/
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
public @interface List {
NotEmpty[] value();
}
Run Code Online (Sandbox Code Playgroud)
我不确定它是如何工作的,也不确定如何使用它.根据我的理解,Java 8下的任何内容都不允许在同一元素上重复注释.
任何人都可以澄清一下吗?
Mik*_*unu 10
NotEmpty.List存在的原因是,为同一元素不能重复相同的注释这一事实.在NotEmpty.List的帮助下,多个NotEmpty注释有效地应用于一个元素.注释处理检查作为NotEmpty.List值的NotEmpty注释列表.
在NotEmpty的情况下,使用List of validators的一个原因可能是使用组并为每个组分配不同的消息.
为了举例,我们采取可以代表公司或个人的实体.在这两种情况下,name不应为null,但消息不同:
@NotEmpty.List({
@NotEmpty( message = "Person name should not be empty",
groups=PersonValidations.class),
@NotEmpty( message = "Company name should not be empty",
groups=CompanyValidations.class),
})
private String name;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5002 次 |
| 最近记录: |