Java s:bean标记在Struts2中是如何工作的?
以下是来自以下方面的示例: 我的问题是,如果我在bean标记中提到属性var,会将Java s:bean标记在Struts2中是如何工作的?,java,struts2,Java,Struts2,以下是来自以下方面的示例: 我的问题是,如果我在bean标记中提到属性var,会将SimpleCounter放在值堆栈还是堆栈的上下文中?(我将堆栈上下文作为操作上下文,对吗?) 如果是在值堆栈上,那么为什么我们用#引用计数器变量,因为#用于引用操作上下文中的值,而不是值堆栈中的值。对吧? 错了 “应用程序上下文”纯粹是一个servlet规范工件,与OGNL字符没有直接关系。OGNL的#允许我们访问命名的值堆栈值,而不是遍历值堆栈直到找到合适的值 说“[…]id已设置为计数器的值””也是不准确的
SimpleCounter
放在值堆栈还是堆栈的上下文中?(我将堆栈上下文作为操作上下文,对吗?)
如果是在值堆栈上,那么为什么我们用#
引用计数器变量,因为#
用于引用操作上下文中的值,而不是值堆栈中的值。对吧? 错了
“应用程序上下文”纯粹是一个servlet规范工件,与OGNL
字符没有直接关系。OGNL的#
允许我们访问命名的值堆栈值,而不是遍历值堆栈直到找到合适的值
说“[…]id已设置为计数器的值”
”也是不准确的<代码>计数器是值堆栈中的命名值。我认为值堆栈是上下文和堆栈的组合——有一个堆栈,但也有不在堆栈上的命名值,例如,#attr
我也不认为将其称为“操作上下文”是准确的,因为它在Struts 2应用程序的上下文中有特定的含义,并且实际上只有在Java源代码方面才有意义
这是一个简单的“值堆栈”,其中包括一个堆栈和命名值。嗨,Dave,对不起,我指的是操作上下文,而不是应用程序上下文。更正在我原来的帖子。您说过“OGNL的#允许我们访问命名的值堆栈值”如果这是正确的,我还看到了#session.user.name,其中session不在值堆栈中,而是在操作上下文中。同样在#attr中,attr取决于动作上下文。根据上述发现,looks#用于查看动作上下文,如果我们不提及#,它将查看值堆栈。在语句“这意味着SimpleCounter类将被放置到堆栈的上下文中”中,整个混乱是单词堆栈上下文的bcoz@MSach No,
#session
是放置到值堆栈上下文中的命名值。堆栈值的来源与此无关<代码>#用于引用值堆栈上下文值,就像那句话所说的——这与操作上下文不同。OGNL存在于Struts 2之外。
<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>
<s:property value="#counter" />