Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Struts2从另一个动作更改动作_Java_Struts2_Struts - Fatal编程技术网

Java Struts2从另一个动作更改动作

Java Struts2从另一个动作更改动作,java,struts2,struts,Java,Struts2,Struts,我想知道是否可以将struts2操作的某些字段从另一个操作更改为其他操作。例如,我有一个带有string1字段的Class1操作,我想将其从另一个操作Class2更改 public class Class1 extends ActionSupport{ private String string1="old String"; } public class Class2 extends ActionSupport{ public String execute(){

我想知道是否可以将struts2操作的某些字段从另一个操作更改为其他操作。例如,我有一个带有string1字段的Class1操作,我想将其从另一个操作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中,可以从会话中获取所有动作形式。在struts2中,从不再有动作表单的那一刻起,它们在会话中不再可用。谢谢

Struts2操作实例是在请求与操作的操作映射匹配时创建的。 每次都会创建新实例

它们一直存在到请求处理结束,之后就无法访问

因此,您必须以某种方式将一个请求同时映射到两个操作,这似乎是不可能的,或者进行其他一些不符合Struts2模型的欺骗

如果您需要将信息从一个操作传递到另一个操作,您可以选择以下选项:

  • 把它放在会议上
  • 把它放进数据库
  • 将其发送回客户端,并在下次请求时重新发送到服务器
允许合理地复制会话范围内的操作表单(在模型级别上或多或少相同)

不过,这实际上取决于您的用例——如果您正试图实现会话范围的操作表单,那么这就是实现它的方法

如果您的目标更多的是“为任意操作设置值”,
ScopedModelDriven
可能不是最佳方法。例如,我需要在任意操作(不是“表单向导”类型的操作)上设置值,并使用拦截器和注释,以便可以从多个源提取数据,并在各种非连续操作上设置它


本质上,它是相同的技术,但包括了其他非web范围,并允许在设置什么的时间和内容方面有更多的回旋余地。

request.getSession.setAttribute(“字符串”“旧/新字符串”)@MarkW我们可以通过在struts2:)@umeshawashinice中实现SessionAware接口来更干净地实现它。我还不熟悉Struts2。从struts1升级重构的时间太长了。在struts1中,表单放入会话是一件好事。无论如何,感谢您的回答。您可以在响应中设置,并在请求中发送回,使用会话,但这一切都取决于您的用例是什么,因为您的用例太通用,无法说明任何内容