隨筆 - 25  文章 - 32  trackbacks - 0
          <2008年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          相冊(cè)

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          今天寫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 有介紹。我就不再贅述了。
          posted on 2008-07-28 19:56 phyeas 閱讀(1761) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 陵水| 康保县| 南昌县| 保康县| 灵山县| 河曲县| 绥德县| 仪征市| 贵溪市| 四会市| 即墨市| 托克逊县| 黔南| 海阳市| 霍州市| 门源| 上虞市| 集贤县| 张北县| 曲麻莱县| 工布江达县| 大埔区| 习水县| 资兴市| 如东县| 察隅县| 岑溪市| 乌审旗| 礼泉县| 交口县| 那坡县| 油尖旺区| 宝山区| 桂平市| 绿春县| 景宁| 鄂尔多斯市| 防城港市| 油尖旺区| 合阳县| 崇礼县|