做了一个简单的图形验证。流程是:
登录页面login.jsp,点击图片调用identifyAction可以重新获取验证码图片
然后点击页面提交按钮,提交到loginAction
问题:根据log4j输出的信息:
如果打开login.jsp正确填写,那么是没有问题的;
但是如果第一次没有正确填写,那么提交后只是执行了
identifyAction而没有执行loginAction,所以不能提交,
找了好久没有找到原因!login.jsp代码:
<script type="text/javascript">
<!-- 
 function changeValidateCode()
       {
        var timenow = new Date().getTime();    
        document.getElementById("randCode").src="identifycode.action?time="+timenow;     
       }
//-->
</script>  </head>
  
  <body>
    
      <s:form action="login" method="post">
         <s:textfield name="username" label="username"></s:textfield>
         <s:textfield name="password" label="username"></s:textfield>
         <s:textfield name="identifyCode" label="identifyCode"></s:textfield>  
         <s:submit value=" submit! "></s:submit>       
      </s:form>  
         <img src="identifycode.action" id="randCode" onclick="changeValidateCode();">
  </body>

解决方案 »

  1.   

    找到问题了,是addActionError的问题! 但是还是不能解决,请高手帮忙!!问题处在loginAction上其execute方法如下:
    if(!code.equals(this.getIdentifyCode()))
    {
    logger.error("session code =[" + code + "] != input code [" + this.getIdentifyCode() +"]" );
    logger.error("identifyCode is not equals to inputCode!");

    // this.addFieldError("","验证码输入不正确!");
    //addActionError("验证码输入不正确!");

    return INPUT;
    }如果将addFieldError 和 addActionError都屏蔽掉,则没有问题!
    否则会处问题:首次登录login.jsp页面没有问题,但是如果第一次的验证码没有填写正确的话,以后流程将不会进入loginAction!