作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我加载对象 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/
我是一名优秀的程序员,十分优秀!