posts - 43,comments - 75,trackbacks - 0

          一、           問題描述:

          1.         技術使用Ext2.0 struts2.0

          2.         在一個form表單中,有一個參數為url,這個url是維護在數據庫中的,代表一個業務數據顯示的頁面,當用戶選擇此業務進行處理時,就需要跳轉到此業務類型的頁面進行顯示,同時還需要傳輸過去一些數據;由于傳輸的數據量也是不定的,可能會超過1024,所以使用javaScript window.location 進行跳轉,參數傳遞可能有問題,所以需要更改為post的方式將數據傳遞過去。

          二、           Ext2.0 form 簡介

          Ext 中的form表單提交,默認的情況下為ajax方式,也就是說當你點擊formsubmit按鈕時,頁面不進行跳轉,只是返回處理結果(成功或者失敗)。

          但是Ext 還提供了非ajax的方式提交,只是需要額外的配置:

          onSubmit : Ext.emptyFn,

          submit : function() {

          submitForm.getForm().getEl().dom.method = 'post';

          submitForm.getForm().getEl().dom.action = rootPath                                                                                                             + "elecbill/common/unTask_goBusiPage.action";

          submitForm.getForm().getEl().dom.submit();

          }

          在上面的配置中藍色的部分就是form表單的非ajax提交方式,然后再指定其數據傳輸方式使用‘post’方式。

          三、           Struts2Chain Result介紹

          struts2中配置請求的跳轉,都是在struts.xml中指定action<result>節點,默認我們都是跳轉到×××.jsp頁面,但是有時候我們要跳轉到其他人已經寫好的action中進行處理,這時候就需要用到 Chain ResultChain Result的配置如下:

          <package name="public" extends="webwork-default">

              <action name="login" class="...">

                  <result type="chain">

                      <param name="actionName">dashboard</param>

                      <param name="namespace">/secure</param>

                  </result>

              </action>

          </package>

          <package name="secure" extends="webwork-default" namespace="/secure">

              <action name="dashboard" class="...">

                  <result>dashboard.jsp</result>

              </action>

          </package>

          注意藍色部分,就是表明login的跳轉將使用 /secure下的dashboardaction進行處理,最終將跳轉到dashboard.jsp頁面

          四、           問題解決方案

          1.        通過上面介紹的Ext form的非ajax方式和struts2Chain Result的處理方式。

          2.        我們先設計一個業務跳轉“中轉站”,此中轉站的功能主要是接收用戶選擇相應的業務處理之后,根據參數中的url,跳轉到對應的業務顯示頁面中。

          3.        Ext中的form表單配置為非Ajax方式,action指向“中轉站”的action

          submitForm.getForm().getEl().dom.action = rootPath   + "elecbill/common/unTask_goBusiPage.action"

          4.         然后在中轉站中解析傳遞的url參數,將namespace 的名稱和action的名稱取出并且保存為String actionName  Sting nameSpace 

          struts.xml文件中配置如下:

          <result name="goBusiPage" type="chain">

                   <param name="actionName">${actionName}</param>

                   <param name="namespace">${namespace}</param>

          </result>

          這樣就可以就實現了動態跳轉了!

          posted on 2010-07-12 11:33 夢源 閱讀(2106) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 改则县| 南皮县| 昌都县| 益阳市| 阳泉市| 杭锦后旗| 海口市| 营山县| 罗山县| 南昌县| 台中市| 成安县| 和田县| 武陟县| 汪清县| 余庆县| 股票| 肇庆市| 教育| 耒阳市| 萨迦县| 广宗县| 凤阳县| 天门市| 普兰县| 磴口县| 长葛市| 康定县| 眉山市| 衡山县| 英德市| 武陟县| 武穴市| 星子县| 阜阳市| 怀安县| 渝北区| 湖北省| 维西| 五华县| 神池县|