【发布时间】:2021-09-09 04:08:25
【问题描述】:
假设我有以下 Pojos 和约束。
public class Pojo1 {
@NotNull
private String field1;
@NotNull
private String field2; // <--- I only want this NotNull in Pojo3.java but not in Pojo2.java
}
public class Pojo2 {
@Valid
private Pojo1 pojo1;
}
public class Pojo3 {
@Valid
private Pojo1 pojo1;
@Valid
private Pojo2 pojo2;
}
我希望 Pojo1.field2 仅在 Pojo3 下验证,而不是在 Pojo2 下验证。换句话说,下面的 JSON 应该通过验证
{
"pojo1": {
"field1": "something",
"field2": "something"
},
"pojo2": {
"pojo1": {
"field1": "something"
}
}
}
【问题讨论】:
-
如何触发验证?
-
@NikolaiShevchenko 验证由
javax.validation包中的对象处理,并由您的 mvc 环境为带有@Valid注释的输入对象自动触发(例如 SpringRestController处理它)。您也可以使用javax.validation.Validator手动触发它。精彩介绍:link. -
@SebastianM 是的,我知道这一点。但是还有另一种方法可以使用
javax.validation.Validator.validate(T object, Class... groups);方法手动触发验证。所以才问触发方式 -
@NikolaiShevchenko 我正在使用 Spring 来处理验证。但如果需要,我可以使用手动验证。我已经研究过组验证,但我认为它不会解决问题
标签: java validation