No result defined for action XXX and result XXX的问题在真相大白
最近在使用struts2的时候出现了一个莫名其妙的问题。
我的struts.xml配置的好好的,如下
?
<action name="register" class="com.lifewool.action.RegisterAction">
<result name="success">success.jsp</result>
<result name="input">index.jsp</result>
</action>
结果访问他的时候缺莫名其妙的报出
?
?
No result defined for action com.lifewool.action.RegisterAction and result success
?
?
真是百思不得其解。
最后通过多方查证是Struts2-Convention-Plugin.jar这个包引起的。
这个包是实现Struts零配置功能的。他会扫描你的所有action、actions、struts 、struts包下含有execute方法的类。并根据其类名建立xxx.action映射。这时候当你访问XXX.action时系统会首先调用零配置方法配置的action,而这时候你又没有使用注解配置其result。当然就报找不到no result啦。?
?
结论就是如果你既用了XML配置和零配置。零配置的各种信息会覆盖XML的。
解决办法。1、如果你的action类名是XXXAction 请不要在XML配置中设置其action name属性为XXX
? ? ? ? ? ? ? ?2、使用零配置
? ? ? ? ? ? ? 3、去掉Struts2-Convention-Pluginx.xx.jar这个包
?
?
?