Posted on 2007-12-05 09:35
天空苍茫 阅读(1847)
评论(4) 编辑 收藏 所属分类:
struts2研究
最近学习struts2,以前曾经学习过webwork2.2,因此学习起来感觉还是蛮快的,不过,最近遇到一个问题。调试了好多天,终于搞定了,问题描述:(我做的是一个登陆)
首先输入用户名、密码和验证码,如果有任何一个输入错误,action执行后,返回到登陆页面,再次修改用户名、密码和验证码后,在次提交。系统竟然没有反应,
错误前代码:
if(admin.getSadminName()==null||admin.getSadminName().length() < 1) {
addFieldError("admin.sadminName", "用户名错误!");
return INPUT;
}
if(admin.getSadminPass()==null||admin.getSadminPass().length() < 1) {
addFieldError("admin.sadminPass", "密码错误!");
return INPUT;
}
if(vn==null||vn.length()<1) {
addFieldError("vn", "验证码输入错误!");
return INPUT;
}
String ValidateNumber = sessionMap.get("ValidateNumber").toString();
logger.info("ValidateNumber="+ValidateNumber);
logger.info("vn="+vn);
if(ValidateNumber==null||ValidateNumber.length()<1) {
addFieldError("vn", "验证码baocun输入错误!");
return INPUT;
}
if(ValidateNumber.equalsIgnoreCase(vn)==false) {
addFieldError("vn", "验证码输11入错误!");
return INPUT;
}
Tadmin cAdmin = adminService.validateAdmin(admin.getSadminName(),MD5.getString(admin.getSadminPass()));
if(cAdmin==null) {
addFieldError("admin.sadminName", "用户名或者密码错误");
System.out.println("用户名密码错误");
return INPUT;
}
sessionMap.put(NewsUtil.ADMIN_USERKEY, cAdmin);
return SUCCESS;
如果是这样的。action只能执行一次,好像action中的参数一直没有释放,所以再次提交,action一直处于运行状态,再次提交,系统不会改变。
如果修改成
//检查用户名是不是存在
if(NewsUtil.checkNull(admin.getSadminName())){
//addFieldError("admin.sadminName", "您输入的用户名有错误");
//actionMessage.
addActionMessage("您输入的用户名有错误");
System.out.println("您输入的用户名有错误");
return INPUT;
}
//检查密码是不是空或者null
if(NewsUtil.checkNull(admin.getSadminPass())){
//addFieldError("admin.sadminPass", "您输入的密码不正确");
System.out.println("您输入的密码不正确");
return INPUT;
}
if(NewsUtil.checkNull(vn)){
//addFieldError("vn", "您输入验证码错误");
System.out.println("您输入验证码错误");
return INPUT;
}
String validateNumber = (String)SessionMap.get("ValidateNumber");
if(NewsUtil.checkNull(validateNumber)){
//addFieldError("vn", "你的验证码不正确。请重新输入");
System.out.println("你的验证码不正确。请重新输入");
return INPUT;
}
if(validateNumber.equalsIgnoreCase(vn)==false){
//addFieldError("vn", "您输入的验证码不正确。请重新输入");
System.out.println("您输入的验证码不正确。请重新输入");
return INPUT;
}
Tadmin cAdmin = adminService.validate(admin.getSadminName(), MD5.getString(admin.getSadminPass()));
if(cAdmin == null){
//addFieldError("admin.sadminName", "对不起,您输入的用户名或者密码有问题");
System.out.println("对不起,您输入的用户名或者密码有问题");
return INPUT;
}
//开始更新用户登陆信息的更新
cAdmin.setIloginTime(cAdmin.getIloginTime()+1);
//cAdmin.setSlastLoginIp(validateNumber)
cAdmin.setSlastLoginTime(new Date());
adminService.update(cAdmin);
SessionMap.put(ShopUtil.TADMIN_LOGINED_KEY, cAdmin);
return SUCCESS;
就OKl了,我在怀疑是不是我使用的版本中有这样的一个bug,