我想要验证这个模型:
public class ClientDomain {
public interface AddValidations {
}
public interface UpdateValidations {
}
private String id;
@NotNull(groups = {ClientDomain.AddValidations.class})
@Size(min = 2, max = 10, groups = {ClientDomain.AddValidations.class})
private String name;
@NotNull(groups = {ClientDomain.UpdateValidations.class})
private ClientType type;
@NotNull(groups = {ClientDomain.AddValidations.class})
private Gender gender;
.....
}
然后,我正在验证它:
Set<ConstraintViolation<Object>> violations = this.validator.validate(clientDomain);
这不起作用,因为我知道这是因为所有约束验证都属于某些组,然后当我不通过组进行验证时,验证器默认采用javax.validation.group.Default那么它什么都没有验证,我是对的?如果是这样,那么有没有办法验证所有约束验证,无论它们属于哪个组?此致!
PD:很明显,我不想这样做:Set<ConstraintViolation<Object>> violations = this.validator.validate(clientDomain, ClientDomain.AddValidations, ClientDomain.UpdateValidations);
答案 0 :(得分:3)
如何使用继承呢?
如果ClientDomain
是您的父接口。你可以这样做:
&GT;&GT;当:
public interface ClientDomain extends Default {}
public interface AddValidation extends ClientDomain
public interface UpdateValidation extends ClientDomain
&GT;&GT;那么
@NotNull(groups = {UpdateValidations.class})
private ClientType type;
@NotNull
private Gender gender;
在此示例中,Gender
是两个组的强制约束。另一方面,ClientType
仅适用于UpdateValidation
。您将编写更少的代码,并且阅读起来也更干净。
顺便说一下。在此示例中,ClientDomain
不是必需的。这只是为了更好的想象力来展示你可以用它做什么。