如何验证休眠验证器上的所有组?
how to validate all groups on hibernate validator?
我有这个模型要验证:
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);
使用继承呢?
如果ClientDomain
是你的父界面。你可以这样做:
>> 当:
public interface ClientDomain extends Default {}
public interface AddValidation extends ClientDomain
public interface UpdateValidation extends ClientDomain
>> 然后
@NotNull(groups = {UpdateValidations.class})
private ClientType type;
@NotNull
private Gender gender;
在此示例中,Gender
是两个组的强制约束。另一方面,ClientType
仅适用于 UpdateValidation
。您将编写更少的代码,并且阅读起来也更清晰。
顺便说一句。 ClientDomain
在此示例中不是必需的。这只是为了更好地发挥想象力,展示您可以用它做什么。
我有这个模型要验证:
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);
使用继承呢?
如果ClientDomain
是你的父界面。你可以这样做:
>> 当:
public interface ClientDomain extends Default {}
public interface AddValidation extends ClientDomain
public interface UpdateValidation extends ClientDomain
>> 然后
@NotNull(groups = {UpdateValidations.class})
private ClientType type;
@NotNull
private Gender gender;
在此示例中,Gender
是两个组的强制约束。另一方面,ClientType
仅适用于 UpdateValidation
。您将编写更少的代码,并且阅读起来也更清晰。
顺便说一句。 ClientDomain
在此示例中不是必需的。这只是为了更好地发挥想象力,展示您可以用它做什么。