2

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

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

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

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

4

1 回答 1

1

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

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

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

于 2014-01-18T09:28:50.553 回答