每当使用struts2动态方法调用时,总是出现错误:There is no Action mapped for namespace [/user] and action name [user!add]

每当使用struts2动态方法调用时,总是出现错误:There is no Action mapped for namespace [/user] and action name [user!add] ,这个错误是我在使用最新的struts2.3.15.2版本时出现的,原来使用struts2.1.6从没有出现过这个问题,查了快两个小时的资料,又是struts的docs,又是问google老师,最后找到一篇文章,人家使用的是2.1.6,但是人家有一句话叫:“注意:要使用动态方法调用,必须设置Struts2允许动态方法调用,通过设置struts.enable.DynamicMethodInvocation常量来完成,该常量属性的默认值是true。”,我就纳闷了,我从来没有定义过嘛,查了一下default.properties文件(当然是2.1.6的啦),人家确实写的是true,这也难怪我当时从来没有注意过这个东东,

  问题来了,为什么2.1.6版本可以正常使用动态方法调用,而当我换成新的2.3.15.2时他就总是报错呢?!怀着探索的心情悄悄地查了一下2.3.15.2……我勒个去了!!!一个大大的false摆在我面前!!!我就凌乱了!!两个小时啊!!为啥新版本默认把动态方法调用常量的默认值改成了false呢?!!难道动态调用很不受欢迎吗?!估计也怪我,没有找着人家的文档中的注释(有木有呢?……不去查了,桑心了……)

  好吧,答案很明显了,若使用最新的struts,需添加struts.properties文件,在其中添加struts.enable.DynamicMethodInvocation = true,

或者在struts.xml中添加<constant name="struts.enable.DynamicMethodInvocation" value="true"/>,均可把这个bug解决……唉,多看文档还是有好处的啊……

posted on 2013-12-07 23:08  273度  阅读(1792)  评论(1编辑  收藏  举报

导航