【发布时间】:2014-05-21 22:27:10
【问题描述】:
这个问题有两个现有的变体:
-
Validate only if the field is not Null :有条件地处理
String字段的解决方案 - Hibernate validation - only validate if object is not null :唯一的答案展示了手动触发验证时如何处理它的行为和提示。
我的问题添加了在可能为 null 的对象上使用 @Valid 时如何执行此操作的限定符。
这里的用例是我们有两个字段,其中一个或另一个需要不为空(包含字段的类上的自定义验证器)。当一个不为空时,我需要它是有效的。然后,我是否需要在我的自定义验证器中完全手动验证该对象,给它增加比预期更多的责任?
在这种情况下仅使用注释会导致抛出 NullPointerException,这会在处理之前中断验证。目前没有办法做到这一点吗?
【问题讨论】:
-
我会说这是一个足够复杂的用例,需要您使用自定义验证器。在验证器中编写你的逻辑,给它一个注释,然后做你需要做的事情。
-
@Valid引用仅在它们不为空时才被跟踪。你能展示你的类并描述 NPE 的确切位置(stacktrace)吗? -
@Gunnar 你确实是正确的。我做了一个简单的测试用例,它像你说的那样工作。它现在也在更复杂的用例中工作。继续写一个答案,这样我就可以将这个谜团标记为已解决。
标签: java hibernate validation bean-validation