java.lang.NoSuchFieldException:cacheList

时间:2013-10-26 13:36:08

标签: java struts2

现在,我正在使用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)

,我知道当设置值=&#34; false&#34;时,不会发生异常。但我想解决这个问题。谁能帮我 ?提前谢谢

1 个答案:

答案 0 :(得分:1)

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