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()方法的第一条语句加个断点,调试下。