java - ActionContext.getContext().getSession() 返回 null

标签 java session jakarta-ee struts2

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

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

}

最佳答案

有两种方法可以获取操作的 session 映射。

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

尝试

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

关于java - ActionContext.getContext().getSession() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24585795/

相关文章:

Java 调试探针

java - 如何多次哈希并在每轮中连接一个字符串

ruby-on-rails - 在 ruby​​ on rails 模型中使用 cookie 值

java - Struts 操作相关问题

jakarta-ee - EJB 上的 JavaEE 类注释处理

java - 为什么 main 方法在子类中不打印任何内容?

java - 从单元格内获取 TreeTableView 行?

session - Laravel 不在 Redis 中存储 session 数据

python - Django - request.session 未保存

python - 针对 Web 和移动客户端的 Web 服务技术的建议