java - Struts 2 Acion类多实例

标签 java struts2 prepared-statement struts2-interceptors

我加载对象 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/

相关文章:

java - ModelMapper 与 Jooq Record 集成

tomcat - 使用 Struts2 提供静态内容 : Tomcat error 404

java - struts 形式的多 Action

java - 如何在 Struts 2 中使 fileUpload 参数动态化

java - 如何验证 url 是否正确

java - Eclipse Java 库

java - 为什么我不能在 Java 运行时使用日志文件

php - MySQLi 多个条件,有什么问题

java - 使用准备好的语句的变量列名

php - 从 MySQLi 字段获取类型规范字符