1

请告诉有什么区别:

ValueStack stack=ActionContext.getContext().getValueStack();

和:

Map cont = ActionContext.getContext().getContextMap();
4

2 回答 2

1

值堆栈(取自 struts 邮件列表)

值栈本质上是一个列表。在堆栈上调用 [1] 会返回一个从索引 1 处的元素开始的子堆栈。只有在调用堆栈上的方法时才会调用实际对象。

换句话说,假设我有一个由模型和动作组成的值堆栈,如下所示:

【型号、作用】

以下是以下 ognl 的解决方式:

[0] - 一个 CompoundRoot 对象,其中包含我们的堆栈、[模型、动作]

[1] - 另一个仅包含 [action] 的 CompoundRoot

[0].toString() - 在支持 toString() 方法的值堆栈(不包括 CompoundRoot)的第一个对象上调用 toString()

[1].foo - 在值堆栈中的第一个对象上调用 getFoo(),从 [OS:action] 开始,不包括支持 getFoo() 方法的 CompoundRoot

上下文映射

ActionContext 是执行 Action 的上下文。每个上下文基本上都是一个操作执行所需的对象容器,例如会话、参数、语言环境等。

ActionContext.getContext().getContextMap();

让您访问正在执行的上下文映射。例如,您需要访问应用程序上下文,而不是使用上述方法返回的映射来访问它

更新 正如@rees 所指出的

ActionContext 的上下文映射几乎是 ValueStack 的支持(上下文)映射

于 2012-09-07T04:39:52.883 回答
0

getContextMap() - com.opensymphony.xwork2.ActionContext 类中的方法 获取上下文映射。此方法获取上下文映射。

getValueStack() - com.opensymphony.xwork2.ActionContext 类中的方法 获取 OGNL 值堆栈。此方法获取此请求的当前值堆栈并返回值堆栈。有关此方法的详细信息。

于 2012-09-07T04:41:00.690 回答