![](/img/trans.png)
[英]How to pass request attribute from one action to another in struts2
[英]Struts2 change action from another action
我想知道是否有可能從另一個動作中更改一個struts2動作的某些字段。 例如,我有Class1 Action with field string1,我想從另一個動作Class2更改它。
public class Class1 extends ActionSupport{
private String string1="old String";
}
public class Class2 extends ActionSupport{
public String execute(){
Class1 class1=new Class1();
class1.setString1("new String");
}
}
在struts1中,可以從會話中獲取所有ActionForms。 在struts2中,從沒有更多操作表單的那一刻起,它們就不再在會話中可用。 謝謝!
當請求與操作的操作映射匹配時,將創建Struts2操作實例。 每次都會創建新實例。
它們一直存在,直到請求處理結束,之后無法訪問。
因此,你必須以某種方式將請求同時映射到兩個動作,這是AFAIK不可能的,或者做一些與Struts2模型相反的詭計。
如果您需要將信息從一個動作傳遞到另一個動作,則有一些選擇,即:
ScopedModelDriven
攔截器和接口允許合理地傳真會話范圍的動作形式(在模型級別或多或少相同)。
這實際上取決於你的用例 - 如果你正在嘗試實現會話范圍的動作表單,這就是這樣做的方法。
如果您的目標更多是“為任意操作設置值”, ScopedModelDriven
可能不是最好的方法。 例如,我需要在任意操作(不是“表單向導”類型的東西)上設置值,並使用攔截器和注釋,這樣我就可以從多個源中提取數據並將其設置為各種非連續的操作。
本質上它是相同的技術,但包括其他非Web范圍,並允許在設置什么時,以及什么方面更多的余地。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.