java - Struts2 中 getContextMap() 和 getValueStack() 之间的区别?

标签 java database string compiler-construction struts2

请说出以下之间的区别:

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

和:

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

最佳答案

Value Stack(取自 struts 邮件列表)

值栈本质上是一个列表。在堆栈上调用 [1], 返回一个以索引 1 处的元素开始的子栈。它只是 当您调用堆栈上的方法时,您的实际对象将是 已调用。

换句话说,假设我有一个值堆栈,其中包含 模型和 Action 如下:

[模型, Action ]

下面是以下 ognl 的解析方式:

[0] - 包含我们的堆栈的CompoundRoot对象,[模型,操作]

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

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

[1].foo - 对值堆栈中的第一个对象调用 getFoo() 从 [OS:action] 开始并排除支持 getFoo() 方法

上下文映射

ActionContext 是执行 Action 的上下文。每个上下文基本上都是一个操作执行所需的对象的容器,例如 session 、参数、区域设置等。

ActionContext.getContext().getContextMap();

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

更新 正如@rees指出的

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

关于java - Struts2 中 getContextMap() 和 getValueStack() 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12311592/

相关文章:

c++ - Qt-C++通过绝对路径连接Sqlite

java - 使用 Java 和 RegEx 转换字符串中的大小写

MySQL 哪个更好地加速一个表与数百万行或管理多个表?

java - 可以用java连接MySQL数据库,但不能用PHP连接?

java - 没有 Hibernate Session 绑定(bind)到线程异常

Java 向下转型/向上转型

mysql - 将 MySQL 与下载的示例数据库连接

Java - 将多个字符串转换为图像格式

string - 为什么这个字符串的引用计数为 4? (德尔福2007)

java - Android 中 ImageButton 上的 ClickEvent?