gpt4 book ai didi

java - 在 Interceptor.intercept() 中,我如何知道 Action 是否已经执行?

转载 作者:行者123 更新时间:2023-11-30 09:53:16 28 4
gpt4 key购买 nike

我正在使用拦截器在基于 Struts 的应用程序中实现一些东西,但我对它们的生命周期如何工作感到困惑。根据 Struts 文档("Interceptors""Writing interceptors""Big picture"),它应该像这样工作:

FirstInterceptor  NextInterceptor    LastInterceptor      Action      Result    LastInterceptor  NextInterceptorFirstInterceptor

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

"Big picture"页面对调用的“之前”和“之后”“子句”的讨论有些困惑,但我不知道该怎么做:

[...]

This includes invoking any Interceptors (the before clause) in advance of invoking the Action itself.

[...]

Interceptors are executed again (in reverse order, calling the after clause).

[...]

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

最佳答案

没有两次调用拦截器:

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;
}

}

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

关于java - 在 Interceptor.intercept() 中,我如何知道 Action 是否已经执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907801/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com