【问题标题】:Struts 2.3.16 - DefaultActionValidatorManager.loadFile() throws NullPointerException while loading Object-validation.xmlStruts 2.3.16 - DefaultActionValidatorManager.loadFile() 在加载 Object-validation.xml 时抛出 NullPointerException
【发布时间】:2014-01-18 08:02:00
【问题描述】:

我们正在将 struts 从 2.0.11 升级到 2.3.16。

在我们的代码中尝试获取DefaultActionValidatorManager.getValidators(getClass(), null) 时,它会在尝试加载java/lang/Object-validation.xml 时从DefaultActionValidatorManager.loadFile() 抛出一个NullPointerException

在互联网上搜索我发现一个类似的问题被报告为WW-3850。它说这个问题在 xwork 2.3.7 中得到了修复。我查看了 xwork 2.3.7 源代码,其中提到了更改(额外的空检查 fileUrl != null)。此检查在 xwork 2.3.14.3 之前存在,并从 2.3.15 开始删除。

知道这是否是一种回归并且需要在 2.3.15 之后修复?或者从 2.3.15 开始还有另一种使用 DefaultActionValidatorManager.getValidators() 的方法? 2.3.16如何解决这个问题?

【问题讨论】:

标签: java configuration struts2 nullpointerexception struts-validation


【解决方案1】:

该修复仍然存在于 Struts 2.3.16 中,但已移至 DefaultFileManager::fileNeedsReloading(URL fileUrl)

相对于ClassLoader::getResource(String name) 可以返回null 值。参见 javadoc 的描述

一个用于读取资源的 URL 对象,如果是 null 找不到资源或调用者没有足够的资源 获取资源的权限。

【讨论】:

  • 谢谢。这就解释了。但是,在我的情况下,我仍然收到 java/lang/Object-validation.xml 的 NullPointerException,因为 fileUrl 对它来说是空的。知道我可能会错过什么吗?好像我缺少一些配置。
  • 应该有动作类简单名称或与动作名称组合。我想我无法重现它,因为这是一个明显的错误,而例外是通知您的合法方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 2014-07-15
相关资源
最近更新 更多