【问题标题】:Is it possible to validate an object field only if it is not null?是否可以仅在对象字段不为空时才对其进行验证?
【发布时间】:2014-05-21 22:27:10
【问题描述】:

这个问题有两个现有的变体:

  1. Validate only if the field is not Null :有条件地处理 String 字段的解决方案
  2. Hibernate validation - only validate if object is not null :唯一的答案展示了手动触发验证时如何处理它的行为和提示。

我的问题添加了在可能为 null 的对象上使用 @Valid 时如何执行此操作的限定符。

这里的用例是我们有两个字段,其中一个或另一个需要不为空(包含字段的类上的自定义验证器)。当一个不为空时,我需要它是有效的。然后,我是否需要在我的自定义验证器中完全手动验证该对象,给它增加比预期更多的责任?

在这种情况下仅使用注释会导致抛出 NullPointerException,这会在处理之前中断验证。目前没有办法做到这一点吗?

【问题讨论】:

  • 我会说这是一个足够复杂的用例,需要您使用自定义验证器。在验证器中编写你的逻辑,给它一个注释,然后做你需要做的事情。
  • @Valid 引用仅在它们不为空时才被跟踪。你能展示你的类并描述 NPE 的确切位置(stacktrace)吗?
  • @Gunnar 你确实是正确的。我做了一个简单的测试用例,它像你说的那样工作。它现在也在更复杂的用例中工作。继续写一个答案,这样我就可以将这个谜团标记为已解决。

标签: java hibernate validation bean-validation


【解决方案1】:

@Valid 引用仅在它们不为空时才被跟踪,因此肯定是其他原因导致您的 NPE。

【讨论】:

  • 是否有明确说明的参考?
猜你喜欢
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
相关资源
最近更新 更多