【问题标题】:Struts Interceptor workflowStruts 拦截器工作流程
【发布时间】:2012-02-03 11:11:09
【问题描述】:

在 Struts2 中,如果我们定义了一个拦截器堆栈,并且以先进先出的方式调用它。 因此,在后期处理阶段,如果较早的拦截器之一返回一个控制字符串,结果将响应呈现给客户端,会发生什么。 我想知道左边的拦截器是否会被处理。

【问题讨论】:

    标签: struts2 interceptor interceptorstack


    【解决方案1】:

    它会像这样工作。

    只有在完全调用拦截器堆栈后才会调用您的操作方法。这意味着一旦在堆栈中成功调用第一个拦截器,它将调用堆栈中定义的下一个拦截器,并且引用存储在堆栈中该链将继续调用,直到调用堆栈中的最后一个拦截器

    invocation.invoke()
    

    此调用是调用堆栈中定义的下一个拦截器的关键,或者这是最后一个它将调用您的操作类中所需的函数。

    现在在其他情况下,假设某些拦截器失败说workflow,它将返回结果为INPUT,并将停止拦截器的进一步执行,框架将向用户输出所需的 JSP/Tempelate。

    在这种情况下,后处理/清理会以相反的顺序调用拦截器,即最先执行或最新执行的拦截器将首先调用,然后依次调用。

    这个后处理的想法是做任何清理工作或任何其他需要做的事情(比如清理资源等)

    希望这能给你一些想法。

    【讨论】:

    • thanks Umesh ..........这意味着页面将呈现给客户端,进程将在后台执行......
    • 是的..当invoke()返回结果已经发送回客户端。所以简而言之,我们可以说这个后处理可以用来执行某些/条件逻辑。
    • @NIVESHSENGAR 我只想补充一点,实现PreResultListener 允许拦截器在结果呈现之前获得控制权,否则这是一个合理的描述。
    • @DaveNewton:你能告诉我这个吗?我不太了解这个概念。任何指向文档的指针都会帮助我理解它。
    • @UmeshAwasthi 有this page,还有一个我写的带注释的,但现在找不到了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2014-02-11
    • 2011-10-25
    • 1970-01-01
    相关资源
    最近更新 更多