Java中的条件验证
我试图在对象图中进行bean验证。假设我有两门课叫做Foo和Bar。他们有“一对一”的关系 Foo.classJava中的条件验证,java,validation,server-side,bean-validation,Java,Validation,Server Side,Bean Validation,我试图在对象图中进行bean验证。假设我有两门课叫做Foo和Bar。他们有“一对一”的关系 Foo.class class Foo { String a; String b; boolean c; @Valid Bar bar; } 酒吧 class Bar { String i; String j; String k; String l; } 我想验证Foo和Bar,但我想根据Foo.class中输入的值对Bar进行
class Foo
{
String a;
String b;
boolean c;
@Valid
Bar bar;
}
酒吧
class Bar
{
String i;
String j;
String k;
String l;
}
我想验证Foo和Bar,但我想根据Foo.class中输入的值对Bar进行条件验证。根据Foo.class中c的值,我想验证Bar.class中的字段。如果c为真,那么我想验证I和j。如果c为false,那么我想验证k和l
还有什么我可以做的吗?我不认为有什么东西能满足你的要求。也就是说,有一种方法允许您使用自定义验证器对类进行注释。我想您可以编写一个验证器,它可以使用您所做的一些自定义注释,并在布尔值上加上指示是否运行Bar验证器。使用纯Bean验证,您不可能按要求执行。Hibernate Validator有一个特定于提供程序的功能,称为
@GroupSequenceProvider
。使用此功能,您可以更改验证对象时执行的组序列。另请参见这将有点困难,因为Bar对象没有引用回其关联的Foo实例。当然,您可以提供一个validate(boolean-cIsTrue)方法,但这可能不是您想要的。在我看来,你应该有两个子类的酒吧,酒吧1和酒吧2。Bar1只包含一个i和一个j,并且知道如何验证自己,而Bar2有一个k和一个l。一个类使用某些字段并具有一种行为,或者使用另一组字段并具有不同行为,这通常是一种“代码味道”。