【发布时间】:2014-06-01 03:38:20
【问题描述】:
我有一个使用 Java 验证注解注解的模型对象。
class Criteria{
@NotEmpty String id;
@NotEmpty String name;
String fileName;
String hours;
}
根据业务需求,将填充 fileName 或 hours 字段,以验证我编写了自定义验证器“CriteriaValidator”。
@Documented
@Constraint(validatedBy = {CriteriaValidator.class})
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE , ElementType.FIELD, ElementType.PARAMETER})
public @interface ValidCriteria {
String message() default "{Criteria.Invalid}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
上面的模型作为输入参数传入一个方法,该方法也用@Valid和@ValidCriteria注释。
public void update(@Valid @ValidCriteria Criteria criteria){...}
我遇到的问题是方法中有 2 个注释。我必须添加 @Valid 才能检查类中注释的约束。我的自定义验证器仅检查以下两个字段之一是否存在:文件名或小时。
我的问题是,我如何拥有一个注释 @ValidCriteria 来验证我的特殊要求以及对象中的 @NotEmpty 字段。
我尝试在我的自定义约束@ValidCriteria 中添加@Valid,但是我得到错误'@Valid 不适用于注释类型'
【问题讨论】:
标签: java validation annotations bean-validation