Java 仅当对象字段不为空时,才可以验证该字段吗?
这个问题有两个现有的变体:Java 仅当对象字段不为空时,才可以验证该字段吗?,java,hibernate,validation,bean-validation,Java,Hibernate,Validation,Bean Validation,这个问题有两个现有的变体: :有条件地处理字符串字段的解决方案 :唯一的答案是演示行为,并提示在手动触发验证时如何处理 我的问题添加了一个限定符,即当在可能为null的对象上使用@Valid时,如何执行此操作 这里的用例是,我们有两个字段,其中一个字段或另一个字段需要不为null(包含字段的类上的自定义验证器)。当一个不是null时,我需要它是有效的。然后,我是否需要在自定义验证器中完全手动验证该对象,从而为其增加比预期更多的责任 在这种情况下,仅使用注释会导致抛出NullPointerExce
字符串
字段的解决方案在这种情况下,仅使用注释会导致抛出NullPointerException,这会在处理它之前使其脱离验证。目前没有办法做到这一点吗?
@有效的
引用只有在它们不为空时才会被遵循,所以一定是其他原因导致了您的NPE。我认为这是一个足够复杂的用例,需要您使用自定义验证器。在验证器中编写逻辑,给它一个注释,然后执行您需要执行的操作。@Valid
引用仅在不为null时才被遵循。你能展示你的课程并描述NPE的确切位置吗(stacktrace)?@Gunnar你确实是对的。我做了一个简单的测试用例,它就像你说的那样工作。它现在也在更复杂的用例中工作。继续写一个答案,这样我就可以将这个谜团标记为已解决。是否有明确说明这一点的参考文献?