2008-12-17 31 views
7

我必須將某個參數從一個動作傳遞給另一個動作,例如,以便跟蹤一個事件。動作之間的Struts2參數

這樣做的最好方法是什麼?

我不會使用會話參數。謝謝

回答

11

假設你在一個動作內的服務器,並希望用某些參數調用另一個動作。

可以使用S:動作標籤援引另一動作,可能帶有附加的/其他參數比原來的動作:

<s:action name="myAction" ignoreContextParams="true" executeResult="true"> 
     <s:param name="foo" value="bar"/> 
    </s:action> 

也可以使用帶有參數的標準的struts-XML結果類型:

<result name="success" type="redirect" > 
     <param name="location">foo.jsp?foo=${bar}</param> 
     <param name="parse">true</param> 
     <param name="encode">true</param> 
</result> 

如果你想有一個客戶端重定向你必須發送一個網址回用正確的參數的客戶端,也許還可以利用一些JavaScript去那裏。在支柱核心標籤

 <s:url action="myAction" > 
      <s:param name="foo" value="bar"/> 
     </s:url> 
+0

我有很多的麻煩搞清楚了這一點: 在Struts 2.1.8.1中不起作用。升級到Struts 2.2.1後,一切都可以。在任何地方都沒有找到一個筆記。 – grefab 2010-08-17 16:04:34

1
<td> 
    <s:url id="url" action="Logging"> 
     <s:param name="m_userNameInAction"><s:property value="m_userNameInForm"/></s:param> 
    </s:url> 
    <s:a href="%{url}">English</s:a> 
</td> 
+0

對不起?我應該回答嗎?請不要垃圾郵件尋找'的分數。 – Giancarlo 2009-09-23 21:10:16

1

使用網址標籤,樣品被給出如下:

   <s:url var="idurl" action="EditEnterprise"> 
        <s:param name="enterpriseId"> 
         <s:property value="enterpriseId" /> 
        </s:param> 
       </s:url> 
0

實際上,範圍和的ServletConfig攔截器可以在Struts2被利用,以自動彈出動作上下文參數,(請求/會話等)

1

實際上,您將要將您的一個動作參數值從一個動作傳遞到另一個動作。

只需包含具有相同名稱的bean變量。您將在行動中接收哪個參數(接收器操作)。

<action name="ForwardAction" class="..."> 
     <result name="success" type="chain">ReceiverAction</result> 
</action> 

ForwardAction參數將被轉發到ReceiverAction。你可以使用它。 但在兩個操作中都包含相同的bean名稱。 。

,如果你要獲得用戶ID在receiveaction手段,

這應該是兩個動作,

private int userid; 

public void setUserid(int id){ 
    this.userid = userid; 
} 

public int getUserid(){ 
    return userid; 
}