簡體   English   中英

如何將 Action class 變量值傳遞給 Struts 2 中的另一個 Action class

[英]How to pass Action class variable value into another Action class in Struts 2

如何將Action class 變量值傳遞給 Struts 2 中的另一個Action class?

我想在另一個操作 class 中使用在查詢變量中檢索到的那個。

動作可以通過不同的方式相互通信,它們可以在不同的線程中運行並且不共享動作上下文。 最流行的方式是通過請求或在 URL 中傳遞參數,XWork 轉換器將在 OGNL 的幫助下將它們轉換為動作屬性。

但我認為LoginAction的目的是通過用戶憑據(email, username, password)對用戶進行身份驗證,並將此信息保存在 session map 中。這是一個可以在操作之間共享的公共資源。 為了讓 session map 可用於操作和其他操作,他們應該實現SessionAware 它將幫助 Struts 將 session map 注入到 action 屬性中。 如果您想在應用程序的許多操作中使用 session,那么為了不在每個操作中實現此接口,您可以創建一個基本操作。

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;
  }
}

然后動作將擴展基本動作以獲得 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;
  }

}

現在 session 中的用戶,您可以從其他操作中獲得 session,或者從session map 中獲得 JSP 和user object。

public class InboxAction extends BaseAction {

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

    return SUCCESS;
  }

} 

試試這個:在第一個動作中使用結果類型

並將第二個動作的名稱作為值添加到第一個動作的結果中

鏈接指向鏈結果的 struts2 的官方頁面

如果您想將所有值發布到另一個操作,請使用“鏈”,否則使用重定向操作並指定參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM