index.jsp:
  <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:
public void validate() {
String username = vo.getUsername();
String password = vo.getPassword();
System.out.println(username);//第二次提交时能接收到数据,可还是返回了input
System.out.println(password);
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,这是怎么回事?

解决方案 »

  1.   

    你的struts配置文件怎么写的啊!    你这个action只是说有没有正确输入,具体的处理你还没写类啊!
    你的配置文件里面应该写的跳转都是index吧!
      

  2.   

    如果验证通过,试下把FieldError清空下。再就是检查一下Struts.xml文件,正确配置了Result了没。。在validate()方法的第一条语句加个断点,调试下。
      

  3.   

    struts.xml:
    <package name="login" namespace="/login" extends="struts-user">
    <action name="loginAction" class="LoginAction" method="login">
    <result name="input">/index.jsp</result>
    <result name="success">/main.jsp</result>
    <result name="error">/globalerror.jsp</result>
    </action>
    </package>
    这是我的xml配置文件,是不是少东西?
      

  4.   

    第二次提交时,FieldError确实没被清空,它不是自动清空吗?