2012-09-04 26 views
1

可能重複:
Can I propagate struts2 ActionErrors between different action classes?如何通過ActionMessage的和ActionError在重定向操作

在action.Test1

公共類的Test1擴展了ActionSupport {

public String execute() { 
     addActionMessage("Hello in test2"); 
     return SUCCESS; 
    } else { 
     addActionError("Please try again"); 
     return INPUT; 
    } 
} 

在struts.xml中

<action name="test1" class="action.Test1"> 
     <result name="success" type="redirect">test2</result> 
    </action> 
<action name="test2" class="action.Test2"> 
     <result name="success">/test2.jsp</result> 
</action> 

我想在test2.jsp

+0

[查看該博客..](http://glindholm.wordpress.com/2008/07/02/preserving-messages-across-a-redirect-in-struts- 2 /)。 – 2012-09-04 07:21:54

回答

0

顯示ActionMessageActionError我強烈地有一個人應該知道的框架是如何工作的基本思想觀點。對於redirect這意味着一個新的請求,這將使框架放棄與第一個請求有關的所有數據,並且請求和響應的新對象將被放置在值堆棧中,因此在您的情況下,您的數據丟失了ActionMessageActionError

如果您在同一App環境中執行此操作,則更適合使用redirectAction,前提是其他操作redirect結果用於重定向到另一個URL(Web資源)。

爲了保存數據,你有這些選項

  1. 使用會話保存價值和其他行動檢索值。
  2. 使用範圍
+2

做這樣的事情並不是不可能的,有一些實例需要重定向,並且需要傳遞Action消息,這就是爲什麼struts2仍支持這種情況。 OP正在尋求幫助,而你卻發表了不必要的演講。 – Macchiato

+0

@Macchiato:你沒有閱讀過問題,也沒有正確回答,因爲我已經給出瞭解決方案,並且總是很好地給出背景如何工作,而不是給出2行代碼。這個評論並不反對你的意見,我完全尊重你的觀點。 –

+1

這個人寫了一個攔截器,應該爲你做這個工作http://glindholm.wordpress.com/2008/07/02/preserving-messages-across-a-redirect-in-struts-2/ – Kris