Posted on 2007-12-05 09:35
天空蒼茫 閱讀(1858)
評論(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,