我需要ServletRequest
在 Struts2 拦截器(不是动作类)中设置一个属性。
是否ActionContext
公开 aMap<String, Object>
以控制请求属性,就像它对会话属性所做的那样?
我看到ActionContext
实现了一张地图。本身是ActionContext
请求属性的包装器吗?
我需要ServletRequest
在 Struts2 拦截器(不是动作类)中设置一个属性。
是否ActionContext
公开 aMap<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;
}
对于不在动作类中的代码(RequestAware
应该用于动作类),Struts2 可以将 servlet 请求属性公开为 Map。它们可以通过以下方式访问:
Map request = (Map) ActionContext.getContext().get("request");
有关详细信息,请参阅Strus2 文档。