从ActionContext获取/设置ServletRequest属性

时间:2014-01-22 19:19:03

标签: java java-ee struts2

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

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

2 个答案:

答案 0 :(得分:1)

ActionContext包含保存请求对象的请求密钥。回答你的问题:没有ActionContext不是请求的包装器,但是Struts2中的请求是servlet请求的包装器。

您可以从

等操作上下文中获取request
HttpServletRequest request = ServletActionContext.getRequest();

这种方式在拦截器中非常有用,但在实施ServletRequestAware

时更有效
protected HttpServletRequest request;

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

答案 1 :(得分:1)

对于不在动作类中的代码(RequestAware应该用于动作类),Struts2可以将servlet请求属性公开为Map。可以通过以下方式访问它们:

Map request = (Map) ActionContext.getContext().get("request");

有关详细信息,请参阅Strus2 documentation