No result defined for action XXX and result XXX的问题解决方法

原博客地址:原博客

最近在使用struts2的时候出现了一个莫名其妙的问题。
我的struts.xml配置的好好的,如下

name="register" class="com.lifewool.action.RegisterAction">
    <result name="success">success.jspresult>
    <result name="input">index.jspresult>

结果

访问他的时候缺莫名其妙的报出

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这个包


作为新手刚刚学习struts2的时候,使用表单登录做测试的时候经常碰到的问题。
我的解决方案,就是标签的name不要使用和创建的action(.java)文件的前面是一样的。

比如,创建的Action类叫LoginAction,那么在action name声明的时候,就使用CheckLogin等等,反正不要用login就对了。

你可能感兴趣的:(javaweb,struts2)