Java Struts 2 Acion类多实例
我像下面那样加载对象Java Struts 2 Acion类多实例,java,struts2,prepared-statement,struts2-interceptors,Java,Struts2,Prepared Statement,Struts2 Interceptors,我像下面那样加载对象userData,以便在JSP上显示它。(稍后将使用Register()方法类型GET从数据库加载它) 接下来,我在JSP上填充另一个userData字段,然后单击register 然后方法Register()再次启动,但不要使用相同的registationAction 例如,attribute1仍然是1而不是2 示例: public class RegistrationAction extends ActionSupport{ int attribute1=0
userData
,以便在JSP上显示它。(稍后将使用Register()
方法类型GET
从数据库加载它)
接下来,我在JSP上填充另一个userData
字段,然后单击register
然后方法Register()
再次启动,但不要使用相同的registationAction
例如,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()
}
}
那么,我应该如何启动同一个操作实例呢?您不应该启动同一个实例。同一实例不会是线程安全的 每个请求生成一个新的操作实例,您必须在结果视图之前对其进行初始化 你可以用它来做 要使三个操作在调用之间共享数据,需要使用
Preparable
从会话中填充字段来准备模型,或者使用会话对象引用为字段提供默认值来保存字段
public class RegistrationAction扩展了ActionSupport实现了可准备的SessionAware{
公众假期准备(){
user=newuserdata();
user.setName(“lucas”);
attribute1=会话.get(“attribute1”);
}
私人Map会议;
@凌驾
公共无效设置会话(映射会话){
this.session=会话;
}
int attribute1=0;
公共字符串寄存器()引发异常{
属性1++;
会话.put(“attribute1”,attribute1);
if(request.getMethod().equals(“GET”){//将对象加载到表单
回归成功;
}
//else POST->save()
}
}
最大值,IMHO。请定义您真正需要做什么,我相信这不会涉及访问ThreadLocal一次性操作的同一个实例。如果您需要跨多个调用记住值,那么会话就是您的friendNew request=new action实例。将数据存储在某个地方或将其传递给新请求。我还建议您使用会话属性来满足此要求。您需要在会话中输出数据,可能这个插件也可以帮助您:D它有一些编译器错误(与往常一样),但重点是解释其他事情。