【问题标题】:struts2 value stack implementationstruts2 值栈实现
【发布时间】:2015-09-10 14:51:11
【问题描述】:

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

【问题讨论】:

    标签: java struts2 valuestack


    【解决方案1】:

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

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

    【讨论】:

    • “当您从 OGNL 访问值堆栈时,is 评估 OGNL 表达式针对值堆栈。” 这里有些奇怪,但不知道具体是什么更正(如果有的话)。很好的答案,顺便说一句。
    • 是的,我不确定它在评估和被评估之间......这句话的下一部分听起来很奇怪:) P.S:为什么双引号是“正确”的错误动词?过于学术,喜欢考试更正?如果是这样,我下次会使用“修复”:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 2020-10-24
    相关资源
    最近更新 更多