国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
【轉(zhuǎn)】兩個Action 動態(tài)傳參數(shù) - tiechui - 博客園

       研究了近兩天的時間,終于把一個很簡單的問題給搞定了,那它是什么問題呢?就是Struts2的兩個Action之間傳參的問題。 
       需求功能是這樣:Action1 獲取數(shù)據(jù)庫配置內(nèi)容,得到相應(yīng)Model的 動態(tài)URL ,這里的URL 有的是Action有的是JSP頁面。 


        1.使用result 類型中的  redirect 類型,如下: 
          <result name="success" type="redirect">${dynamicUrl}?objectId=${objectId}&param1=${param1}</result> 
          這樣傳參才能達(dá)到Action取參數(shù)的需要,如果要是加上 : 
         <param name="param1">${param1}</param> 
        <param name="items">${items}</param> 

         那么 param1 和 items 這兩個參數(shù)都無法從目標(biāo)Action里得到,如果想得到的話只能用 objectId=${objectId}&param1=${param1} 這種方式,或者用session來實現(xiàn),這樣就有點復(fù)雜了,而且使用起來也相當(dāng)?shù)牟环奖?。后來又嘗試了第二種方式: 
         
         2.使用result類型中的redirect-action類型  如下: 
        <result name="success" type="redirect-action"> 
             <param name="actionName">${actionName}</param> 
              <param name="namespace">${namespace}</param> 
        </result> 
        此時,result之間不能再設(shè)其它的自定義的參數(shù)了,因為 redirect-action對應(yīng)的是 org.apache.struts2.dispatcher.ServletActionRedirectResult,而actionName和namespace是它的兩個屬性,還有一個重要屬性就是methodName,如果要再加其它自己定的參數(shù),只能擴展該類了。我在此基礎(chǔ)上,又在result 之外添加了幾個param 參數(shù),如: 
       

        <param name="param1">${param1}</param> 
        <param name="param2">${param2}</param> 
        <result name="success" type="redirect-action"> 
             <param name="actionName">${actionName}</param> 
             <param name="namespace">${namespace}</param> 
        </result> 
     但是還是不能將param1和param2兩個參數(shù)傳到目標(biāo)Action中。既然Struts2有這種機制,那么它就一定能夠?qū)崿F(xiàn),兩個Action的動態(tài)傳參,只是我對它不了解而已,后來,我又翻出來Strut2的源碼和XWork的源碼,再結(jié)果網(wǎng)上的資料,又嘗試了第三種方式,終于可以了。 

  3.使用reulst 類型中chain類型 如下: 

   <action name="getTemplate" class="tabAction" method="getTemplateByParas"> 
         <param name="objectId">${objectId}</param> 
        <param name="param1">${param1}</param> 
        <param name="items">${items}</param> 
        
        <result name="success" type="chain"> 
         <param name="actionName">${actionName}</param> 
         <param name="namespace">${namespace}</param> 
        </result> 
         
  </action> 

       這樣就可以實現(xiàn)傳參了,這里的參數(shù)所有對象都可以傳,包括map,List,set 等集合也可以。同時這里還需要注意一個小問題,chain這種類型是XWork中的result類型,它對應(yīng)的類是: 
       com.opensymphony.xwork2.ActionChainResult .   這里需要注意一個小問題, actionName,namespace都是他的屬性,所以對于傳過的URL參數(shù)要做一下處理。 
       actionName必須是Action的名稱,namespace是他命名空間,必須以"/"開頭,如: 
       /tab/getTemplate.action       則 namespace="/tab"   ;  actionName=”getTemplate“;  


這是小弟在使用Struts2時,遇到兩個Action動態(tài)傳參的問題時總結(jié)的心得,希望對個位同仁有所幫助,不當(dāng)之處,請多指教。

 

注:<action name="getTemplate" class="tabAction" method="getTemplateByParas"> 
         <param name="objectId">${objectId}</param> 
        <param name="param1">${param1}</param> 
        <param name="items">${items}</param> 
        
        <result name="success" type="chain"> 
         <param name="actionName">${actionName}</param> 
         <param name="namespace">${namespace}</param> 
        </result> 
         
  </action>

 

可以改為

<action name="getTemplate" class="tabAction" method="getTemplateByParas">        
        <result name="success" type="chain"> 
           <param name="actionName">${actionName}</param> 
           <param name="namespace">${namespace}</param> 
        </result>  
  </action>

 

對于對象,1-在前面Action 和后面Action中要寫 getter setter,  2-actionName,namespace 配置一定要寫,否則錯。

type為chain, 使兩個action共享httpServletRequest, 所以不用寫太多配置,有g(shù)etset就能取出來

 

【轉(zhuǎn)】

例如 在執(zhí)行完action1之后要直接跳轉(zhuǎn)到action2,并且action1要傳一些參數(shù)給action2,在struts.xml文件中的配置如下:
        <action name="action1" method="" class="">
            <result name="success" type="chain">
                <param name="actionName">action2</param>
                <param name="param1">${param1}</param>
                <param name="param2">${param2}</param>
            </result>              
        </action>  

 

注意:
     1. 若param1和param2是兩個變量,那么在兩個action中都要有他們的getter和setter
     2. 若param1是常量,那么在action1中只要有一個param1的getter,在action2中要有param1的getter和setter   

如果在兩個action之間直接跳轉(zhuǎn)而不用傳參數(shù),struts.xml文件可以和上面一樣,只是沒有param標(biāo)簽,還可以使用如下配置:
    <action name="action1" method="" class="">
        <result name="success" type="redirectAction">action2.action</result>              
    </action>
即可

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
struts2看視頻后整理
struts2 返回類型
使用redirect避免重復(fù)提交
Struts2框架學(xué)習(xí)之三:result返回結(jié)果
struts2 處理請求流程分析(結(jié)合源碼)2
寶寶Struts2學(xué)習(xí)總結(jié)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服