我正在使用拦截器在我的基于 Struts 的应用程序中实现一些东西,我对它们的生命周期如何工作感到困惑。根据 Struts 文档(“拦截器”、“编写拦截器”和“大图”),它应该像这样工作:
第一个拦截器 下一个拦截器 最后拦截器 行动 结果 最后拦截器 下一个拦截器 第一个拦截器
这是有道理的,但是我在如何区分在操作之前执行的拦截器调用和在结果呈现之后执行的拦截器调用时遇到了困难(我在PreResultListener
这里跳过了 s )。如果我启动一个调试器,我会接到两个电话,并且在我被传递 (更新:这部分是我的主要困惑,一旦我得到它,我就可以在下面回答我的问题)intercept()
时找不到任何太明显的东西。ActionInvocation
“大图”页面对所谓的“之前”和“之后”“子句”有些混淆,但我不知道该怎么做:
[...]
这包括在调用 Action 本身之前调用任何拦截器(before 子句)。
[...]
拦截器被再次执行(以相反的顺序,调用 after 子句)。
[...]
(更新:尽管这两个句子仍然很糟糕)