1

值堆栈在 Struts2 内部是如何工作的,或者当创建值堆栈上的对象时,是在拦截器执行之前还是在拦截器执行之后?当对象被压入值堆栈时,拦截器如何调用 getter 和 setter?

4

1 回答 1

3

代码可用,这是我见过的最好的解释。

  1. 对象要么 (a) 压入堆栈,要么 (b) 放入值堆栈上下文。前者通过正常的 OGNL 表示法访问。后者是通过 OGNL 的#前缀字符访问的,这基本上意味着“这是值堆栈上下文中的命名值”。
  2. 首先创建上下文的堆栈。任何事情都可能修改值堆栈(及其上下文);拦截器和动作是明显的主要参与者。
  3. 除了可能将对象推送到上面之外,拦截器通常不会对值堆栈做太多事情。Getter 和 setter 在操作上,而不是在堆栈上,它们通常被直接调用。
  4. 当您使用 OGNL 访问值堆栈时,它会根据值堆栈评估 OGNL 表达式。命名值与上下文相反,其他一切都与堆栈相反。如果“当前”堆栈级别未解析为值,则查询下一个堆栈级别,依此类推,直到没有更多堆栈元素。
于 2015-09-10T17:23:43.970 回答