叶明的javablog

java学习天堂,个人关于其他blog:blog.javaworker.cn,欢迎大家访问
posts - 64, comments - 50, trackbacks - 0, articles - 3

struts2遇到的怪问题

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,

Feedback

# re: struts2遇到的怪问题[未登录]  回复  更多评论   

2007-12-05 12:49 by gaga
关注..

# re: struts2遇到的怪问题  回复  更多评论   

2008-01-16 08:51 by lovajava_ye
问题找到了 addFieldError 通常是用到validate()方法里的

# re: struts2遇到的怪问题  回复  更多评论   

2008-05-10 21:29 by sss
我的页面也是这样,换成addActionMessage就都好了,
但是这是怎么搞的啊??
没道理

# re: struts2遇到的怪问题  回复  更多评论   

2008-07-09 13:29 by cvxv
那jsp页面怎么改啊

只有注册用户登录后才能发表评论。


网站导航: