我需要在Struts2拦截器(不是动作类)中设置ServletRequest
属性。 ActionContext
是否公开Map<String, Object>
来控制请求属性,就像会话属性一样?
我看到ActionContext
实现了一个地图...... ActionContext
本身是请求属性的包装器吗?
答案 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。