2012-06-12 50 views
3

可能重複:
Strut2 - Get Property value in next Action傳遞參數,而在Struts2重定向

我想達到以下使用Struts2的

response.sendRedirect("Pay.jsp?msg=transfer"); 

這就是我在做:

<action name="AddPayAction" class="controller.AddPayAction"> 
      <param name="paraA"></param> 
      <param name="paraB"></param> 
      <param name="msg">SomeMessage</param> 
      <result name="error">/Error.jsp</result> 
      <result name="success" type="redirect">/Pay.jsp</result> 
</action> 

任何建議,爲什麼上面沒有重定向爲:

 Pay.jsp?msg=SomeMessage 

回答

8

到目前爲止,對我工作的解決方案是

<result name="success" type="redirect"> 
       <param name="location">/Pay.jsp?msg=${msg}</param> 
</result> 

在setter和味精的干將在行動

0

我覺得應該是這樣的:

<action name="AddPayAction" class="controller.AddPayAction"> 
    <result name="error">/Error.jsp</result> 
    <result name="success" type="redirect"> 
     <param name="location">Pay.jsp</param> 
     <param name="paraA"></param> 
     <param name="paraB"></param> 
     <param name="msg">SomeMessage</param> 
    </result> 
</action> 

見例如在http://struts.apache.org/2.1.6/docs/redirect-result.html

+0

定義試過..仍然沒有進展。 – MistyD

+0

這種方法只適用於使用默認調度程序進行轉發時 – MistyD

+0

在我的情況下,我正在重定向 – MistyD

2
<action name="AddPayAction" class="controller.AddPayAction"> 
     <result name="success" type="redirectAction"> 
     <param name="actionName">Pay</param> 
     <param name="msg">SomeMessage</param> 
     </result> 
    </action> 

    <action name="Pay"> 
     <result name="success">/Pay.jsp</result> 
    </action>  

如果你想傳遞一個變量值,例如msg它的getter/setter在AddPayAction聲明然後使用這個

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

A similar post

+0

嘗試了此方法,並且您發佈的示例假定目標目標是一個操作,但目標是一個jsp。 – MistyD

+0

清楚地看答案。出於同樣的原因,我已經聲明瞭一個單獨的動作映射'Pay'到'Pay.jsp'。另外,確保結果類型是'redirectAction'而不是'redirect' – anu

+0

儘管我已經找到了解決方案(感謝您的幫助)。我肯定會再次出手。再次感謝 – MistyD

0

縱觀你的代碼,它看起來像你只是想結束在JSP的動作,所以我不明白爲什麼你試圖使用redireciton類型。我建議使用默認的重定向類型:dispatcher

<action name="AddPayAction" class="controller.AddPayAction"> 
    <result name="error">/Error.jsp</result> 
    <result name="success">/Pay.jsp</result> 
</action> 

注意,如dispatcher是德默認類型,你不必在結果寫type="dispatcher"。所以,現在,如果你想在JSP中使用變量,你只需要用get/set方法在action中聲明這些變量。例如:

private String msg; 

public String AddPayAction() { 

    // your action code 

    this.setMsg("my message"); 

    return SUCCESS; 

} 

public String getMsg() { 

    return msg; 
} 

public void setMsg(String msg) { 

    this.msg= msg; 
} 

看看result types可用。

+0

我之所以做重定向是因爲動作基本上改變了數據庫,所以爲了防止用戶通過做一個REFRESH來重新改變數據,我重定向而不是轉發 – MistyD