2012-01-12 100 views
5

我只想应用某些@NotBlank注释,如果其他字段为false。在我目前的项目中,我们必须使用hibernate验证器,所以没有可用的commons validation + valang来解决这个问题。休眠验证器 - 有条件地应用验证器

因为我不太喜欢创建多个自定义注释来解决什么应该是一件容易的事情(有点不爽,这不是JSR-303规范的一部分)我想知道如果有人知道一个可接受的方式来完成这一点。我发现一个罐子完成了,但是这是为了休眠3.因为变化...

回答

5

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

请参阅Hibernate Validator Docs

我现在很是烦人。我有这样的情况,并尝试了像@NotEmpty(depends =“anotherField”),这是一个完全失败。

也许一些其他成员知道另一种方法来做到这一点,但现在,我正在做Hibernate Validator所说的。

+0

说实话,在我看来,缺乏对这种情况的支持是我的JSR-303规范的宠儿之一。而且级别约束条件很好,但它们并没有为您提供和定制错误消息的灵活性。 – 2012-01-13 10:07:34

+1

同意,但我只是一个问题分离的问题。字段验证特定于一个字段/属性(空,空,大于X,低于Y)。这些是不可改变的验证,不应该依赖系统的任何其他部分。你永远不会与此混淆。否则,有人可能会在一个领域创建一个验证疯狂。 – Beccari 2012-01-13 14:32:15

+1

@Beccari如果我的情况是,如果field1 = true,则验证另一个。假设我的其他字段是一个类对象,现在我只使用了@Valid。如果我要做这件事情,那么我将不得不为我自己的其他领域的验证机制独自编写对吗?我不能再使用@ @ Valid' – Kraken 2014-05-19 17:33:45