兩個Action 動態傳引數

2021-09-01 06:57:27 字數 1829 閱讀 2409

研究了近兩天的時間,終於把乙個很簡單的問題給搞定了,那它是什麼問題呢?就是struts2的兩個action之間傳參的問題。

需求功能是這樣:action1 獲取資料庫配置內容,得到相應model的 動態url ,這裡的url 有的是action有的是jsp頁面。

1.使用result 型別中的 redirect 型別,如下:

$?objectid=$¶m1=$

這樣傳參才能達到action取引數的需要,如果要是加上 : $$

那麼 param1 和 items 這兩個引數都無法從目標action裡得到,如果想得到的話只能用 objectid=$¶m1=$ 這種方式,或者用 session來實現,這樣就有點複雜了,而且使用起來也相當的不方便。後來又嘗試了第二種方式:

2.使用result型別中的redirect-action型別 如下: $$

此時,result之間不能再設其它的自定義的引數了,因為 redirect-action對應的是 org.apache.struts2.dispatcher.servletactionredirectresult ,而actionname和namespace是它的兩個屬性,還有乙個重要屬性就是methodname,如果要再加其它自己定的引數,只能擴充套件該類了。我在此基礎上,又在result 之外新增了幾個param 引數,如: $$

$$但是還是不能將 param1和param2兩個引數傳到目標action中。既然struts2有這種機制,那麼它就一定能夠實現,兩個action的動態傳參,只是我對它不了解而已,後來,我又翻出來strut2的原始碼和xwork的原始碼,再結果網上的資料,又嘗試了第三種方式,終於可以了。

3.使用reulst 型別中chain型別 如下: $$

$$$這樣就可以實現傳參了,這裡的引數所有物件都可以傳,包括map,list,set 等集合也可以。同時這裡還需要注意乙個小問題,chain這種型別是xwork中的result型別,它對應的類是:

com.opensymphony.xwork2.actionchainresult . 這裡需要注意乙個小問題, actionname,namespace都是他的屬性,所以對於傳過的url引數要做一下處理。

actionname必須是action的名稱,namespace是他命名空間,必須以"/"開頭,如:

/tab/gettemplate.action 則 namespace="/tab" ; actionname=」gettemplate「;

這是小弟在使用struts2時,遇到兩個action動態傳參的問題時總結的心得,希望對個位同仁有所幫助,不當之處,請多指教。注:$

$$$$

可以改為$$

對於物件,1-在前面action 和後面action中要寫 getter setter, 2-actionname,namespace 配置一定要寫,否則錯。

type為chain, 使兩個action共享httpservletrequest, 所以不用寫太多配置,有getset就能取出來

***例如 在執行完action1之後要直接跳轉到action2,並且action1要傳一些引數給action2,在struts.xml檔案中的配置如下:

action2$$

注意:1. 若param1和param2是兩個變數,那麼在兩個action中都要有他們的getter和setter

2. 若param1是常量,那麼在action1中只要有乙個param1的getter,在action2中要有param1的getter和setter

如果在兩個action之間直接跳轉而不用傳引數,struts.xml檔案可以和上面一樣,只是沒有param標籤,還可以使用如下配置:

action2.action

即可

Struts2 兩個Action之間動態傳引數

兩個action 動態傳引數 研究了近兩天的時間,終於把乙個很簡單的問題給搞定了,那它是什麼問題呢?就是struts2的兩個action之間傳參的問題。需求功能是這樣 action1 獲取資料庫配置內容,得到相應model的 動態url 這裡的url 有的是action有的是jsp頁面。1.使用re...

兩個Activity的傳遞引數與回傳引數

前提 建好第乙個activity 前面所學的都是只有乙個activity 準備 建立父類為activity的second activity,再新增布局檔案來排放控制項 建立oncreat來設定控制項 開始 private onclicklistener listener new onclicklis...

關於action傳引數的乙個問題

首選在action中 request.setattribute emid emid 到jsp中,然後在jsp中 然後在struct config.xml中這樣配置 報錯為 cannot retrieve definition for form bean null on action updateen...