Validation Hibernate验证程序-有条件地应用验证程序

Validation Hibernate验证程序-有条件地应用验证程序,validation,hibernate-validator,Validation,Hibernate Validator,我只想在另一个字段为false时应用某些@NotBlank注释。在我当前的项目中,我们必须使用hibernate验证器,因此没有commons validation+valang可以解决这个问题 由于我不太喜欢创建多个自定义注释来解决简单的问题(对这不是JSR-303规范的一部分感到有点遗憾),我想知道是否有人知道一种可以接受的方法来实现这一点。我找到了一个罐子,它完成了这个任务,但那是给Hibernate3的。由于更改…对于这种情况,建议的方法是使用类级约束,而不是字段级或属性级约束 请参阅

我只想在另一个字段为false时应用某些@NotBlank注释。在我当前的项目中,我们必须使用hibernate验证器,因此没有commons validation+valang可以解决这个问题


由于我不太喜欢创建多个自定义注释来解决简单的问题(对这不是JSR-303规范的一部分感到有点遗憾),我想知道是否有人知道一种可以接受的方法来实现这一点。我找到了一个罐子,它完成了这个任务,但那是给Hibernate3的。由于更改…

对于这种情况,建议的方法是使用类级约束,而不是字段级或属性级约束

请参阅

我现在觉得很烦人。我有一个这样的场景,尝试了@NotEmpty(depends=“anotherField”)之类的东西,但完全失败了


也许其他一些成员知道另一种方法,但现在,我正在做Hibernate Validator说的事情。

老实说,在我看来,缺乏对这种场景的支持是我对JSR-303规范的一个不满。类级约束很好,但是它们并没有给你同样的灵活性来放置和定制你的错误消息。同意,但我认为这只是一个关注点分离的问题。字段验证专门针对一个字段/属性(空、空、大于X、小于Y)。这些是不可变的验证,不应该依赖于系统的任何其他部分。你永远不会被它弄糊涂。否则,有人可能只在一个字段中创建验证疯狂。@Beccari如果我的情况是如果field1=true,则验证另一个字段。假设我的另一个字段是一个类对象,现在我只在它上面使用@Valid。如果我要做这种If-else之类的事情,我必须自己为我的另一个字段编写验证机制,对吗?我不能使用
@Valid
任何longer@Kraken我相信是这样。如果从对象字段中删除
@Valid
,验证将永远不会在其字段中“输入”-例如执行
@NotNull
验证。如果希望验证此对象字段,则必须处理类级验证,根据field1=true手动调用validator.validate()。是否有最佳方法?