【问题标题】:How to pass Action class variable value into another Action class in Struts 2如何将 Action 类变量值传递给 Struts 2 中的另一个 Action 类
【发布时间】:2021-08-26 00:43:30
【问题描述】:

如何在 Struts 2 中将 Action 类变量值传递给另一个 Action 类?

我想在另一个动作类中使用在查询变量中检索到的那个。

【问题讨论】:

  • 我想在 struts2 中使用它
  • 用例是什么?你是如何连接这两个动作的?
  • @Dave Newton 我不了解用例。我在 LoginAction 类中声明了三个参数,我正在通过 jsp 页面输入三个参数的值。现在我想检索 InboxAction 类中的三个值之一。如果你愿意,我也可以发布我的代码。
  • @user 为什么不将第一个操作的结果传递给它们?
  • 为什么要在另一个动作中直接实例化一个动作?这不是一个好主意有多种原因。

标签: java authentication session parameters struts2


【解决方案1】:

动作可以通过不同的方式相互通信以及它们在不同的线程中运行并且不共享动作上下文。最流行的方式是通过请求或在 URL 中传递参数,XWork 转换器将在 OGNL 的帮助下将它们转换为操作属性。

但我认为LoginAction 的目的是通过用户凭据(email, username, password) 对用户进行身份验证,并将此信息保存在会话映射中。它是可以在动作之间共享的公共资源。要获得可用于操作和其他操作的会话映射,他们应该实现SessionAware。它将帮助 Struts 将会话映射注入到 action 属性中。如果您想在应用程序的许多操作中使用会话,则不在每个操作中实现此接口,您可以创建一个基本操作。

public class BaseAction extends ActionSupport implements SessionAware {

  private Map<String, Object> session;

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

  public Map<String, Object> getSession(){
    return session;
  }
}

然后操作将扩展基本操作以获得会话兼容性。

public class LoginAction extends BaseAction {

  @Override
  public String execute() throws Exception {
    User user = getUserService().findBy(username, email, password);
    getSession().put("user", user);

    return SUCCESS;
  }

}

现在用户在会话中,您可以从其他操作或 JSP 中获取会话,并从 session 映射中获取 user 对象。

public class InboxAction extends BaseAction {

  @Override
  public String execute() throws Exception {
    User user = (User) getSession().get("user");

    return SUCCESS;
  }

} 

【讨论】:

  • 如何把它放到另一个动作类中?
  • @user 或者可能是this 回答更适合?
  • getUserService() 方法不起作用。我们需要为此导入任何包吗?
【解决方案2】:

试试这个:在第一个操作中使用结果类型chain

并将第二个动作的名称作为值添加到第一个动作的结果中

链接到struts2的官方页面查看链结结果

【讨论】:

    【解决方案3】:

    如果您想将所有值发布到另一个操作使用“链”,否则使用重定向操作并指定参数。

    【讨论】:

      猜你喜欢
      • 2013-06-11
      • 2016-04-18
      • 1970-01-01
      • 2013-01-23
      • 2012-04-18
      • 1970-01-01
      • 2019-05-02
      • 1970-01-01
      • 2016-08-29
      相关资源
      最近更新 更多