【问题标题】:ActionContext.getContext().getSession() returns nullActionContext.getContext().getSession() 返回 null
【发布时间】:2014-07-05 19:32:41
【问题描述】:

我在 struts2 中使用 SessionAware,但是当我获取 session 的值时,它返回 null。我的动作类和方法是-

public class CustomLocation extends ActionSupport implements SessionAware{
private Map<String, Object> sessionMap;

public String prepareEditCustomLocationForm()throws Exception{
    //----some code here------//
    sessionMap.put("LocEditId", id);
    return SUCCESS;
}


public String editCustomLocation() throws Exception{
Map session = (Map) ActionContext.getContext().getSession(); // it returns null
int id=(Integer)session.get("LocEditId");
//----------some code----------//
retutn SUCCESS;
}


@Override
public void setSession(Map<String, Object> map) {
this.sessionMap = map;    
}

}

【问题讨论】:

  • 检查 sessioMap 有 getter 和 setter 方法。
  • 如果您使用的是SessionAware,为什么要尝试从ActionContext 获取会话?

标签: java session jakarta-ee struts2


【解决方案1】:

有两种方法可以获取到操作的会话映射。

  1. 实施SessionAware。默认情况下,会话映射在操作调用时填充。这是一种更可取的方式。
  2. 从操作上下文中获取会话映射。这样,您应该确保请求由 struts2 过滤器处理。

试试

public String editCustomLocation() throws Exception{
  int id=(Integer)sessionMap.get("LocEditId");
  //----------some code----------//
  retutn SUCCESS;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-15
    • 2022-01-09
    • 2015-06-06
    • 2018-01-23
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    相关资源
    最近更新 更多