在Interceptor.intercept()内部,我如何知道Action是否已经被执行?

2023-12-05

我正在使用拦截器在基于 Struts 的应用程序中实现一些内容,但我对它们的生命周期如何工作感到困惑。根据 Struts 文档(“拦截者”, “编写拦截器” and “大图景”),它应该像这样工作:



FirstInterceptor
  NextInterceptor
    LastInterceptor
      Action
      Result
    LastInterceptor
  NextInterceptor
FirstInterceptor
  

这是有道理的,但我在如何区分在操作之前执行的拦截器调用和在结果呈现之后执行的拦截器调用时遇到了困难(我正在跳过PreResultListener在这里)。 如果我启动调试器,我会收到两次调用intercept()并且在上面找不到任何太明显的东西ActionInvocation我被超越了。(Update:这部分对我来说是一个很大的困惑,一旦我得到它,我就能够回答下面的问题)

The “大图景”页面谈论了一些令人困惑的“之前”和“之后”“子句”,但我不知道如何理解它:

[...]

这包括在调用操作本身之前调用任何拦截器(before 子句)。

[...]

拦截器再次执行(以相反的顺序,调用 after 子句)。

[...]

(Update: 不过这两句话还是不好)


没有对拦截器的两次调用:

public class MyInterceptor implements Interceptor {

    public String intercept(ActionInvocation invocation) {
        /*
        This is before Action.execute(),
        and before all interceptors down the stack
        */

        String code = invocation.invoke();

        /*
        This is after Action.execute(),
        the result rendering and all
        interceptors down the stack,
        but before the interceptors
        higher up in the stack.
        */

        return code;
    }

}

(请注意,我在调试器中目睹的“两次拦截调用”是我没有注意到的不太明显的重定向的结果。这让我很困惑。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Interceptor.intercept()内部,我如何知道Action是否已经被执行? 的相关文章

随机推荐

  • 将我的 jQuery 单击事件与现有对象的 onclick 属性混合

    我正在使用 jQuery 但处理从 JSF 页面生成的标记 许多元素都具有 JSF 代码提供的 onclick 属性 这不是我的领域 Example div submit div 我正在尝试使用 jQuery 添加一些客户端验证 我需要这样
  • AES 解密时,最终块未正确填充

    首先 我会告诉大家我的主要目标是什么 我将在客户端使用 AES 加密一些内容 然后使用 RSA 公钥加密重要的 AES 规范 并将 AES 加密数据和 RSA 加密 AES 规范发送到服务器 因此 在服务器上 我将使用 RSA 私钥解密 A
  • MySQL 用户定义的纬度经度语法函数

    我创建了一个 MySQL 函数来确定一组纬度和经度坐标是否在另一组纬度和经度坐标的特定范围内 但是 该函数给了我一个语法错误 因此我无法测试它是否正常工作 任何有助于找出导致错误的原因的帮助将不胜感激 该函数及其描述如下 它的工作原理是将起
  • RxAndroidBle 多种特性通知和读/写

    我在设置多个特征的通知时遇到问题 我已经查看了文档 许多示例仅涵盖了非常精细的情况 我的用例如下 1 扫描设备 2 用户选择要连接的设备 连接持续到应用程序关闭 3 订阅多种特性的通知 4 一次读 写单个特征 在某些情况下一次读 写多个特征
  • 我无法让程序正确读取输入文件中的值(二维数组)

    我的程序错误地读取了该值 当我尝试从此文件中获取值时 存在同样的问题 14 14 8 0 4 16 2 0 1 7 7 4 7 0 23 0 44 290 350 16 16 10 0 5 17 2 2 1 8 8 5 4 0 27 0 5
  • 解析 Amazon MWS Scratchpad 响应

    我正在尝试解析来自亚马逊的 xml 文件 但发现困难 我正在使用 simplexml load string xml simplexml load string 这里是我的 xml 但当我这样做时 echo xml gt GetMatchi
  • 将 CALayer 子层压平为一层

    在我的应用程序中 我有一个根层 以及许多作为 rootLayer 的子层的图像 我想将 rootLayer 的所有子层展平为一个没有任何子层的层 图像 我认为我应该通过在核心图形上下文中绘制所有子图层来做到这一点 但我不知道该怎么做 我希望
  • Linux 如何通过错误号获取错误描述

    在 Linux 中 特别是我有 Ubuntu 14 如果某个程序因错误而终止 我可以通过以下方式获取数字错误代码 多变的 failing app echo 然而数字本身并不能告诉我太多信息 如何获取错误名称和描述 有一个错误列表 man e
  • ”' aria-label='使用 Pandas Dataframe 的半正弦距离计算器“无法将系列转换为 ”'> 使用 Pandas Dataframe 的半正弦距离计算器“无法将系列转换为

    我尝试在 Panda Dataframe 上使用半正矢计算 from math import radians cos sin asin sqrt def haversine lon1 lat1 lon2 lat2 convert decim
  • 如何制作 jQuery 倒计时

    我想要一个 jQuery 倒计时 页面下载完成后开始计数 数到 0 后重定向到一个 url 我怎样才能做到这一点 我想我应该稍微分解一下并提供一些既可以倒计时又可以重定向的东西 毕竟 明天您可能想要倒计时并操作 DOM 因此 我提出了以下
  • BottomNavigationView 与导航图再次加载片段

    我在用BottomNavigationView with nav graph下面是我的代码 InMainActivity class navController Navigation findNavController this R id
  • 当 'type = "norm" 时如何计算 ggplot stat_ellipse() 的面积?

    类似这个问题 当 type norm 时 有什么方法可以计算这个椭圆的面积吗 默认为type t type norm 显示不同的椭圆 因为它假设多元正态分布而不是多元 t 分布 这是代码和情节 使用与其他帖子类似的代码 library gg
  • 页面加载后jquery加载div

    实际上我正在寻找的加载是首先加载页面 然后加载包含大量数据的 div 所以 我想首先加载主页 然后使用 jQuery 函数加载正文 div 内容 但有一些延迟 实现这个的简单方法是什么 div div navigation div div
  • 如何使用 Lombok 访问 getter 和 setter 方法? [复制]

    这个问题在这里已经有答案了 我已经在我的项目中添加了 Lombok maven 存储库 并成功使用了 Lombok 注释 我尝试从另一个类访问 setter 和 getter 方法 但无法访问这些方法 我正在使用 spring Boot 版
  • SQL Server - 有没有办法批量解决排序规则冲突

    我们遇到的情况是 开发和生产 SQL Server 之间的数据库 表和某些列的排序规则不同 这对开发造成了严重破坏 事情会在开发上工作 然后由于升级时的排序规则冲突而中断 数据和结构将从产品复制到开发 这又会因为冲突等而破坏开发上的查询 我
  • 执行Python程序

    我已经在网上搜索答案很长一段时间了 但这让我非常头疼 我使用的是 Ubuntu 12 04 我想从终端执行 Python 脚本而不使用完整路径 因此 我通过将以下内容添加到 bashrc 中 将 home kyril python scri
  • 嵌入式 Jetty 找不到带注释的 Servlet

    短的 我有一个提供 war 工件的项目 其中包含带有注释的 servlet 但没有 web xml 如果我尝试在 jetty 中使用 war 我总是只能得到 war 内容的目录列表 而不是 servlet 执行 任何想法 很长的故事 我的
  • SQL 按最近日期选择具有两个唯一列的行

    使用以下查询和结果 我正在查找 ChargeId 和 ChargeType 唯一的最新条目 select chargeId chargeType serviceMonth from invoice CHARGEID CHARGETYPE S
  • Hindley-Milner 的哪一部分是你不明白的?

    I swear曾经有一个T shirt出售带有不朽文字的 哪一部分 do you not理解 就我而言 答案是 全部 特别是 我经常在 Haskell 论文中看到这样的符号 但我不知道它的含义 我不知道它应该是数学的哪个分支 我当然认识希腊
  • 在Interceptor.intercept()内部,我如何知道Action是否已经被执行?

    我正在使用拦截器在基于 Struts 的应用程序中实现一些内容 但我对它们的生命周期如何工作感到困惑 根据 Struts 文档 拦截者 编写拦截器 and 大图景 它应该像这样工作 FirstInterceptor NextIntercep