0

这是bean 标签文档中的示例:

<s:bean name="org.apache.struts2.example.counter.SimpleCounter" var="counter">
  <s:param name="foo" value="BAR" />
  The value of foot is : <s:property value="foo"/>, when inside the bean tag <br />
</s:bean>

那么这里是解释:

这个例子实例化了一个被调用的 beanSimpleCounter并设置了foo属性 ( setFoo('BAR'))。然后将该SimpleCounter对象推入值堆栈,这意味着我们可以getFoo()使用属性标签调用其访问器方法()并获取它们的值。

在上面的示例中,id 已设置为 counter 的值。这意味着SimpleCounter该类将被放入堆栈的上下文中。您可以SimpleCounter使用 Struts 标签访问该类:

<s:property value="#counter" />

我的问题是,如果我在 bean 标记中提到属性 var,会SimpleCounter放在值堆栈或堆栈的上下文中吗?(我将堆栈上下文作为操作上下文对吗?)

如果在值堆栈上,那么我们为什么使用#as引用计数器变量#来引用动作上下文中的值而不是值堆栈。正确的?

4

1 回答 1

0

错误的。

“应用程序上下文”纯粹是一个 servlet 规范工件,与 OGNL#字符没有直接关系。OGNL#允许我们访问命名值堆栈值,而不是遍历值堆栈直到找到合适的值。

说“[...] id 已设置为值counter”也是不准确的。counter是值堆栈中的命名值。我认为值堆栈是上下文和堆栈的组合——有一个堆栈,但也有不在堆栈上的命名值,例如#attr.

我也不认为将其称为“动作上下文”是准确的,因为它在 Struts 2 应用程序的上下文中具有特定的含义,并且实际上仅在 Java 源代码方面才有意义。

它是简单的“值堆栈”,其中包括一个堆栈和命名值。

于 2012-07-02T19:46:54.800 回答