我需要在Struts2拦截器(不是动作类)中设置ServletRequest属性。 ActionContext是否像会话属性那样公开Map<String, Object>来控制请求属性?

我看到ActionContext实现了一个映射... ActionContext本身是请求属性的包装器吗?

最佳答案

ActionContext包含用于保存请求对象的请求密钥。要回答您的问题:ActionContext不是请求的包装,但是Struts2中的请求是servlet请求的包装。

您可以从操作上下文中获取request

HttpServletRequest request = ServletActionContext.getRequest();


这种方法在拦截器中很有用,但在实际操作中更好地实现ServletRequestAware

protected HttpServletRequest request;

public void setServletRequest(HttpServletRequest request) {
  this.request = request;
}

10-07 15:53