No result defined for action com.cobble.action.webfilter.LoginAction and result input
1.问题现象
DEBUG [geby:Errors on action com.cobble.action.webfilter.LoginAction@17414c8, returning result name 'input'] 2013-03-22 10:26:13,375 [com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor] -
ERROR [geby:Could not find action or result
/cobble/loginAlias.action] 2013-03-22 10:26:13,375 [org.apache.struts2.dispatcher.Dispatcher] -
No result defined for action com.cobble.action.webfilter.LoginAction and result input
struts-login.xml配置
1 <package name="login" extends="struts-default" namespace="/"> 2 <default-action-ref name="login"></default-action-ref> 3 <!--登录--> 4 <action name="login" class="loginAction" method="login"> 5 <result name="login">/easyfoneWeb/jsp/frame/login.jsp</result> 6 <result name="success" type="redirectAction"> 7 <param name="actionName">index</param> 8 <param name="namespace">/frame</param> 9 </result> 10 </action> 11 </package>
2.解决方法----只需要阅读4.1即可。
2.1此行【不正确】----{此处本人出现误解,详情请看4.1}
<action name="login" class="loginAction" method="login">
中的class,用的是spring3来统一管理的,貌似此处不可以。
访问的时候,第一次可以访问,正常的流程,debug的时候会进入到action里面去,但是第二次及以后访问都不能进入到action中。
2.2需要改为action的完整限定名。即【正确】
<action name="login" class="com.cobble.action.login.LoginAction" method="login">
3.总结
网上还有可能的解决方法:1)action的特性name不能为login或者register等;2)存在LoginAction-validation.xml没有验证通过(http://struts.apache.org/release/2.3.x/docs/basic-validation.html)。
4.补充
4.1根据他人的回复,把spring配置改为如下【正确】,此时struts2-action可以按照原来的配置即【
<action name="login" class="loginAction" method="login">
】
1 <!-- 登录 --> 2 <bean id="loginAction" class="com.cobble.action.login.LoginAction" scope="prototype"> 3 <property name="sysUserService" ref="sysUserService"/> 4 </bean>
4.1-A:原来的spring配置【不正确】
1 <!-- 登录 --> 2 <bean id="loginAction" class="com.easyfone.action.login.LoginAction"> 3 <property name="sysUserService" ref="sysUserService"/> 4 </bean>
@Cobble HF.AH.CHN 2013-03-22