请说出以下两者的区别:
ValueStack stack=ActionContext.getContext().getValueStack();
和:
Map cont = ActionContext.getContext().getContextMap();
值栈本质上是一个列表。在堆栈上调用 [1], 返回一个以索引 1 处的元素开始的子栈。它只是 当您调用堆栈上的方法时,您的实际对象将是 打电话了。
换句话说,假设我有一个值堆栈,其中包含 模型和动作如下:
[模型、动作]
以下是以下 ognl 的解决方法:
[0] - 包含我们的堆栈的CompoundRoot对象,[模型,操作]
[1] - 另一个仅包含[action]的CompoundRoot
[0].toString() - 对值中的第一个对象调用 toString() 支持toString()方法的堆栈(不包括CompoundRoot)
[1].foo - 对值堆栈中的第一个对象调用 getFoo() 从 [OS:action] 开始并排除支持 getFoo() 方法
ActionContext 是执行 Action 的上下文。每个上下文基本上都是执行操作所需的对象的容器,例如会话、参数、区域设置等。
ActionContext.getContext().getContextMap();
使您能够访问正在执行的上下文映射。例如,您需要访问应用程序上下文,而不是使用上述方法返回的映射来访问应用程序上下文
更新 正如@rees
所指出的ActionContext 的上下文映射几乎是 ValueStack 的支持(上下文)映射
getContextMap() - 类 com.opensymphony.xwork2.ActionContext 中的方法 获取上下文映射。该方法获取上下文映射。
getValueStack() - 类 com.opensymphony.xwork2.ActionContext 中的方法 获取 OGNL 值堆栈。 此方法获取此请求的当前值堆栈并返回值堆栈。有关此方法的详细信息。