gpt4 book ai didi

java - Struts 2 Acion类多实例

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:59 25 4
gpt4 key购买 nike

我加载对象 userData 如下所示,以在 JSP 上显示它。 (稍后它将从数据库加载)使用 Register() 方法类型 GET

接下来,我在 JSP 上填写 userData 的另一个字段,然后单击注册。

然后方法 Register() 再次开始,但不使用相同的 RegistrationAction

例如attribute1 仍然是 1 而不是 2。

示例:

public class RegistrationAction extends ActionSupport{
int attribute1=0;
public String Register() throws Exception {
attribute1++;
if(request.getMethod().equals("GET")){ //load object to form
user=new UserData();
user.setName("lucas");
return NONE;
}
//else POST -> save()
}
}

那么我应该怎么做才能开始这个相同的 Action 实例?

最佳答案

你不应该启动同一个实例。同一个实例将不是线程安全的。

每个请求都会产生一个新的 Action 实例,您必须在结果 View 之前对其进行初始化。

您可以使用 Preparable 来完成.

Having three actions that share a data between calls requires preparing a model using Preparable to populate fields from session or use a session object reference to provide default values for fields to keep them saved.

public class RegistrationAction extends ActionSupport implements Preparable, SessionAware {

public void prepare() {
user=new UserData();
user.setName("lucas");
attribute1 = session.get("attribute1");
}

private Map<String, Object> session;

@Override
public void setSession(Map<String, Object> session) {
this.session = session;
}

int attribute1=0;
public String Register() throws Exception {
attribute1++;
session.put("attribute1", attribute1);
if(request.getMethod().equals("GET")){ //load object to form
return SUCCESS;
}
//else POST -> save()
}
}

关于java - Struts 2 Acion类多实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36632538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com