java - struts2值栈实现

标签 java struts2 valuestack

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

最佳答案

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

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

关于java - struts2值栈实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32505182/

相关文章:

java - SSL/双向 SSL 通信问题

java - 如何在方法外部使用方法内部的值(位置)

java - 在java中创建一个数组数组

java - 为什么我不能改变Struts2的valueStack?

java - ExecutorService 占用内存过多

java - Struts 2 中的字符串到字符串类型转换不起作用?

tags - 在迭代器中使用 Struts if Statement

html - Struts2 文本区域调整大小

java - 如何从 ValueStack 中删除操作?

java - Struts 2 在 validator 表达式中使用 StringUtils