Hello,friends!

          loocao

          myJavaWorld

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            13 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks
          今天寫(xiě)coding的時(shí)候發(fā)現(xiàn)一個(gè)問(wèn)題。郁悶。Action執(zhí)行過(guò)一次之后,第二次請(qǐng)求竟不再次執(zhí)行Action。這讓人非常郁悶。
          代碼是這樣的:
          public String login() {
                  UserinfoDto user 
          = biz.login(account, password);
                  
          if (user == null{
                      
          // TODO 用戶名/密碼錯(cuò)誤
                      this.addActionError("用戶名/密碼錯(cuò)誤,請(qǐng)重新登陸。");
                      
          return "input";
                  }

                  
          // TODO 登陸成功
                  request.setAttribute("user", user);
                  
          return "loginSuccess";
              }
          biz是利用Spring注入的業(yè)務(wù)對(duì)象。如果登陸成功則沒(méi)什么。但是一次登陸失敗后。以后的每次都登陸失敗。惱火。改用ActionMessage。可以了。但是每失敗依次都會(huì)增加一個(gè)message。我才想到。原來(lái)Action并沒(méi)有被消除。可能Struts2對(duì)已經(jīng)有ActionError的對(duì)象就不再訪問(wèn)。而直接返回錯(cuò)誤頁(yè)面。這里我試了一下。第一次發(fā)生錯(cuò)誤之后能返回你定義的頁(yè)面。而以后每次訪問(wèn)則返回"input",不會(huì)再次執(zhí)行Action。所以。而這一切都是因?yàn)锳ction是被 Spring創(chuàng)建的。如果是XWork創(chuàng)建的。每次請(qǐng)求它都會(huì)創(chuàng)建一個(gè)新的Action。就不會(huì)發(fā)生以上問(wèn)題。因?yàn)樾聞?chuàng)建的 Action不會(huì)預(yù)先添加ActionError。解決方案是將Action放在request作用域中。具體做法在 http://blog.csdn.net/wxy_G/archive/2008/01/29/2071662.aspx 有介紹。我就不再贅述了。

          phyeas 2008-07-28 19:56 發(fā)表評(píng)論

          文章來(lái)源:http://www.aygfsteel.com/phyeas/archive/2008/07/28/218160.html
          posted on 2008-07-28 19:56 loocao 閱讀(781) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 固安县| 绥中县| 宜兰县| 黎川县| 昭通市| 安阳县| 亚东县| 韩城市| 桐城市| 新乡市| 广安市| 甘泉县| 琼中| 柏乡县| 随州市| 琼结县| 洪雅县| 水富县| 奉节县| 醴陵市| 大丰市| 武安市| 沾益县| 汨罗市| 饶河县| 城固县| 那坡县| 北票市| 黄龙县| 卢氏县| 大埔区| 偃师市| 玉树县| 沂水县| 阿图什市| 六安市| 巫溪县| 淮南市| 万山特区| 定兴县| 大安市|