posts - 56, comments - 77, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          需求是表單提交后, 轉(zhuǎn)到另外一個(gè)已經(jīng)存在的頁面, 并在頁面上方的空白處顯示一條醒目的消息, 而且只顯示一次 (刷新后這條消息不應(yīng)該再出現(xiàn)).

          對(duì) Web 開發(fā)相當(dāng)不熟,  Pair說這需求類似 RoR里的 flash message, 問Java里有沒有.  我們用SpringMVC + Velocity, 看了看文檔, 問了問人, 短時(shí)間沒有得到確定方案.

          那就試一試吧, 明知幾乎不可能成功, 還是寫下了下面的代碼:

          model.put("flashMessage""I'm stupid");
          return new ModelAndView(new RedirectView("anotherPage"),  model);

          果然不行,  model無法跨Controller.  那就放在Session里?  以我有限的Web經(jīng)驗(yàn), 應(yīng)該可以, 問題是何時(shí)把它從Session中清除?

          這應(yīng)該是一個(gè)概念: 你放一個(gè)東西到Session里, 但你只能獲得一次, 下次它就不存在了.

          用類來表示概念,  我們只需在生成對(duì)象時(shí)把自己加到Session里, 在提供的獲取函數(shù)中把自己從Session中移除, 那么第二次你就得不到它了.

          import javax.servlet.http.HttpSession;

          public class ThrowawayObject {
              
          private HttpSession session;
              
          private String attribute;
              
          private Object value;

              
          public ThrowawayObject(HttpSession session, String attribute, Object value) {
                  
          this.session = session;
                  
          this.attribute = attribute;
                  
          this.value = value;

                  session.setAttribute(attribute, 
          this);
              }

              
          public Object getValue() {
                  session.removeAttribute(attribute);
                  
          return value;
              }
          }


          在 Controller 里, 只需:

          new ThrowawayObject( session, "flashMessage""I'm Stupid" );


          在 View 里, 這里是 velocity 模板:

          #if($flashMessage)
          <script language="javascript">
              showNotificationMsg(
          "$flashMessage.value")
          </script>
          #end


          那么在 Spring MVC 中實(shí)現(xiàn)這類功能的標(biāo)準(zhǔn)做法是什么樣的? 其它Java Web 框架呢?


          評(píng)論

          # re: ThrowawayObject :在Java中實(shí)現(xiàn)Rails里的Flash Message  回復(fù)  更多評(píng)論   

          2008-10-06 22:51 by 隔葉黃鶯
          不錯(cuò),受教了

          # re: ThrowawayObject :在Java中實(shí)現(xiàn)Rails里的Flash Message  回復(fù)  更多評(píng)論   

          2008-10-07 20:44 by simbas
          可以看看grails的flash的實(shí)現(xiàn)

          # re: ThrowawayObject :在Java中實(shí)現(xiàn)Rails里的Flash Message  回復(fù)  更多評(píng)論   

          2010-01-21 04:00 by guest
          controller 里面設(shè)置session值
          template/view里面刪除session值
          pylons里面是這樣做的。

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 宜州市| 教育| 沅陵县| 桦甸市| 福州市| 宁强县| 中方县| 大英县| 姚安县| 青冈县| 化德县| 天台县| 通海县| 桃江县| 东光县| 建水县| 紫金县| 大洼县| 贡觉县| 滁州市| 长武县| 福清市| 河池市| 宁陕县| 枞阳县| 都江堰市| 鸡东县| 梧州市| 泊头市| 山西省| 吐鲁番市| 泗阳县| 商河县| 慈利县| 白河县| 天门市| 武汉市| 兴义市| 田阳县| 商城县| 三门县|