日期:2014-05-20  浏览次数:20812 次

struts2的validate方法使用问题
index.jsp:
HTML code
  <body>
      <s:fielderror></s:fielderror>
    <s:form action="loginAction" namespace="/login" method="post" name="loginform">
        <s:textfield name="vo.username"></s:textfield> <br />
        <s:password name="vo.password"></s:password> <br />
        <s:submit value="登陆"></s:submit>
    </s:form>
  </body>


Action:
Java code
    public void validate() {
        String username = vo.getUsername();
        String password = vo.getPassword();
        [color=#FF0000]System.out.println(username);[/color]//第二次提交时能接收到数据,可还是返回了input
        [color=#FF0000]System.out.println(password);[/color]
        if(username==null || username.trim().length()==0) {
            this.addFieldError("vo.username", "用户名不能为空");
        }
        if(password==null || password.trim().length()==0) {
            this.addFieldError("vo.password", "密码不能为空");
        }
    }


现在的问题是
第一次提交,没填写用户名密码,流程走到validate方法,执行addFieldError,返回input(input对应的页面就是index.jsp)
返回到index.jsp页面,然后我填写了用户名密码,提交,程序走到validate方法时,能打印出username/password,说明有数据,可依然反回了input,这是怎么回事?

------解决方案--------------------
如果验证通过,试下把FieldError清空下。

再就是检查一下Struts.xml文件,正确配置了Result了没。。

在validate()方法的第一条语句加个断点,调试下。