1

现在,我正在编写一个带有 struts 2.8 版本的程序;当我在 struts.xml 文件中设置 devMode 如下

<constant name="struts.devMode" value="true" />

程序抛出异常:

Throwable occurred: java.lang.NoSuchFieldException: cacheList
at java.lang.Class.getDeclaredFieldImpl(Native Method)
at java.lang.Class.getDeclaredField(Class.java:517)
at com.opensymphony.xwork2.util.LocalizedTextUtil.clearMap(LocalizedTextUtil.java:835)

,我知道当设置value="false"时,不会发生异常。但我想解决这个错误。谁能帮我 ?提前致谢

4

1 回答 1

1

根据devMode文档,启用后,Struts 2 将在每次请求时重新加载您的资源包、配置文件和 struts.xml。也许这个设置不太广为人知,因此会引起很多混乱:它将调试级别或通常可以忽略的问题提升为错误。例如:当您提交无法在操作“someUnknownField”(在您的情况下为cacheList)上设置的字段时),它通常会被忽略。但是,当您处于开发模式时,会抛出异常,告诉您提交了无效字段。这对于调试或测试大型表单非常有用,但如果您依赖请求中未在操作上设置但您直接在视图层中使用的参数也会造成混淆(警告:不好的做法,您应该始终验证来自网络的输入)。希望这可以阐明为什么在启用 devMode 时会引发错误。

于 2013-10-26T14:07:32.370 回答