Struts2 兩個Action之間動態傳引數

2021-08-31 08:31:52 字數 1206 閱讀 6541

兩個action 動態傳引數

研究了近兩天的時間,終於把乙個很簡單的問題給搞定了,那它是什麼問題呢?就是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的問題

又好久沒有寫點東西了,這兩天帶實驗,有幾個問題彙總一下吧 1 關於struts2中filterdispatcher過濾的問題,官方提供的過濾方式是 其實預設過濾的是 action,這個大家可以在struts2核心類庫中的default.properties struts2 core 2.0.11.j...

struts2配置action驗證

背景 接昨天的struts2框架搭建 新增對action關聯form表單中input框輸入的內容進行校驗 操作測試完成後文件如下圖 使用者名稱不能為空 使用者名稱輸入不合法,必須為長度在6 16中間的數字或字母 true 密碼不能為空 密碼輸入不合法,必須為長度在6 16之間的數字或者字母 總結 配...

struts2配置預設Action

作用 當乙個請求無法匹配到任何乙個struts的action時,可以配置乙個預設action 例如 當請求路徑不正確時,跳轉到乙個404.jsp頁面 package extends struts default name default namespace default action ref na...