java如何在类级注释之前对带有@valid注释的属性执行验证?
假设a类关联B类,我需要在a类和B类之间进行数据验证,所以我在a类级别添加了一个自定义注释,也将其放在另一个组中,这样我可以控制执行顺序,但它似乎只在a上起作用,我希望在a和B上完成基本验证后执行自定义验证,但似乎没有,B上的验证是在之后执行的,如何在自定义验证之前执行? 以下是示例代码:
@XXXValidation(groups = Second.class)
@GroupSequence({A.class, Second.class})
public class A {
@valid
private B b;
}
public class B {
@NotNull
private String name;
}
# 1 楼答案
在类级别上使用
@GroupSequence
重新定义默认组的组序列。这是类的本地属性,不会传播到任何关联。将在关联类中验证默认组。另请参见Bean验证规范中的相关章节-http://beanvalidation.org/1.1/spec/#constraintdeclarationvalidationprocess-groupsequence-redefiningdefaultgroup如果要确保在给定的组顺序中验证整个对象图,则需要“请求”该顺序,作为对验证器的顶级调用的一部分。验证。如果您自己控制验证,这应该是直截了当的。如果您将Bean验证作为另一个框架的一部分使用,则需要参考其文档,了解如何指定组。例如,JPA定义了一组可以设置的属性(例如在persistence.xml中),以定义哪些组(序列)应作为JPA生命周期事件的一部分进行评估
根据您的用例,您可能还可以使用@ConvertGroup。检查Hibernate验证程序的规范或online documentation以获取示例