在实验中addActionError("");对有跳转有影响!在"input"页上addActionError("")后,系统都将认为是 validate错误直接放回input不执行人和方法.
这种现象好像不应该发生,不知道如何解决?
<action name="m_Login" method="login" class="LoginAction">
<result name="input">login.jsp</result>
<result name="success">main.jsp</result>
<result name="error">login.jsp</result>
<interceptor-ref name="defaultStack"/>
</action>
public String login() throws Exception{ System.out.println("-- << UserAction.login() >> --");
//取session校验码
if (vercode != null && vercode.equals("randCode")) {
//略
System.out.println("-- << UserAction.login() >> SUCCESS --");
return SUCCESS;
} else {
addActionError("用户名/密码不匹配");
System.out.println("-- << UserAction.login() >> ERROR --");
return ERROR;
} } else {
addActionError("验证码不匹配,请重新输入");
System.out.println("-- << UserAction.login() >> ERROR --");
return ERROR;
} }以上login.jsp上输入正确可以通过
09:49:27,328 DEBUG PrefixMethodInvocationUtil:141 - cannot find method [validateLogin] in action [cz.loginSystem.action.LoginAction@142f703]
09:49:27,328 DEBUG PrefixMethodInvocationUtil:141 - cannot find method [validateDoLogin] in action [cz.loginSystem.action.LoginAction@142f703]
09:49:27,328 DEBUG DefaultActionInvocation:383 - Executing action method = login
-- << UserAction.login() >> --
randCode[936222] vercode[123] user[userName1] passwd[userPasswd1]
-- << UserAction.login() >> login --
09:49:27,343 DEBUG DefaultListableBeanFactory:385 - No bean named 'org.apache.struts2.dispatcher.ServletDispatcherResult' found in org.springframework...略一旦出错执行了 addActionError("用户名/密码不匹配") 或 addActionError("验证码不匹配,请重新输入"); 在 login.jsp上体现以后,就再也进不了"Executing action method = login",更别说跳转其他页了.09:49:55,671 DEBUG PrefixMethodInvocationUtil:141 - cannot find method [validateLogin] in action [cz.loginSystem.action.LoginAction@142f703]
09:49:55,671 DEBUG PrefixMethodInvocationUtil:141 - cannot find method [validateDoLogin] in action [cz.loginSystem.action.LoginAction@142f703]
09:49:55,671 DEBUG DefaultWorkflowInterceptor:215 - Errors on action cz.loginSystem.action.LoginAction@142f703, returning result name 'input'
09:49:55,671 DEBUG DefaultListableBeanFactory:385 - No bean named 'org.apache.struts2.dispatcher.ServletDispatcherResult' found in org.springframework....略
09:49:55,687 DEBUG DefaultListableBeanFactory:195 - Ignoring constructor [public org.apache.struts2.dispatcher.ServletDispatcherResult(java.lang.String)] of bean
09:49:55,687 DEBUG ServletDispatcherResult:113 - Forwarding to location login.jsp只要去掉addActionError("..."); 一切正常.这似乎<result name="error">login.jsp</result> 和<result name="input">login.jsp</result>不能是同一页?
但以上程序是 <<某权威指南>>上的例子,他这么写应该没错!那我错在哪里?请高手赐教!!
这种现象好像不应该发生,不知道如何解决?
<action name="m_Login" method="login" class="LoginAction">
<result name="input">login.jsp</result>
<result name="success">main.jsp</result>
<result name="error">login.jsp</result>
<interceptor-ref name="defaultStack"/>
</action>
public String login() throws Exception{ System.out.println("-- << UserAction.login() >> --");
//取session校验码
if (vercode != null && vercode.equals("randCode")) {
//略
System.out.println("-- << UserAction.login() >> SUCCESS --");
return SUCCESS;
} else {
addActionError("用户名/密码不匹配");
System.out.println("-- << UserAction.login() >> ERROR --");
return ERROR;
} } else {
addActionError("验证码不匹配,请重新输入");
System.out.println("-- << UserAction.login() >> ERROR --");
return ERROR;
} }以上login.jsp上输入正确可以通过
09:49:27,328 DEBUG PrefixMethodInvocationUtil:141 - cannot find method [validateLogin] in action [cz.loginSystem.action.LoginAction@142f703]
09:49:27,328 DEBUG PrefixMethodInvocationUtil:141 - cannot find method [validateDoLogin] in action [cz.loginSystem.action.LoginAction@142f703]
09:49:27,328 DEBUG DefaultActionInvocation:383 - Executing action method = login
-- << UserAction.login() >> --
randCode[936222] vercode[123] user[userName1] passwd[userPasswd1]
-- << UserAction.login() >> login --
09:49:27,343 DEBUG DefaultListableBeanFactory:385 - No bean named 'org.apache.struts2.dispatcher.ServletDispatcherResult' found in org.springframework...略一旦出错执行了 addActionError("用户名/密码不匹配") 或 addActionError("验证码不匹配,请重新输入"); 在 login.jsp上体现以后,就再也进不了"Executing action method = login",更别说跳转其他页了.09:49:55,671 DEBUG PrefixMethodInvocationUtil:141 - cannot find method [validateLogin] in action [cz.loginSystem.action.LoginAction@142f703]
09:49:55,671 DEBUG PrefixMethodInvocationUtil:141 - cannot find method [validateDoLogin] in action [cz.loginSystem.action.LoginAction@142f703]
09:49:55,671 DEBUG DefaultWorkflowInterceptor:215 - Errors on action cz.loginSystem.action.LoginAction@142f703, returning result name 'input'
09:49:55,671 DEBUG DefaultListableBeanFactory:385 - No bean named 'org.apache.struts2.dispatcher.ServletDispatcherResult' found in org.springframework....略
09:49:55,687 DEBUG DefaultListableBeanFactory:195 - Ignoring constructor [public org.apache.struts2.dispatcher.ServletDispatcherResult(java.lang.String)] of bean
09:49:55,687 DEBUG ServletDispatcherResult:113 - Forwarding to location login.jsp只要去掉addActionError("..."); 一切正常.这似乎<result name="error">login.jsp</result> 和<result name="input">login.jsp</result>不能是同一页?
但以上程序是 <<某权威指南>>上的例子,他这么写应该没错!那我错在哪里?请高手赐教!!
解决方案 »
- Failed to install Tomcat6 service. Check your settings and permissions Ignore and continue anyway
- j2EE学习交流
- 【面试题】Web service根据什么原理响应客户端的请求的? 谁能介绍下啊,主要是原理~
- 反射的问题,代码不是很明白,求解释
- java的path设置问题
- hibernate的问题
- 急需javamail程序
- DB2中表示时间的sql数据类型常用的有哪些?
- java连接M$ SQLServer两种方式的比较,很奇怪啊
- 我将编译好的项目中的一个class文件反编译后修改了
- 关于hibernate 增加!有代码!!!!
- jawin调dll总是不成功,怀疑是dll的问题,谁能给我一个可以用的dll试试?
这句话意思不理解,啥意思??
原来是 Spring 中ACTION 应该设置为 singleton="false" 或者 scope="prototype",才能保证每次new一个ACTION 出来,否则ACTION 始终是同一个实例!所以错误一旦出现,就一直存在,第二次再执行方法调用步骤之前struts发现有fieldError就跳过处理返回input.
恩, singleton的这个问题我也遇到过