首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谁在Struts 2中调用拦截器的intercept方法

谁在Struts 2中调用拦截器的intercept方法
EN

Stack Overflow用户
提问于 2015-03-08 05:15:41
回答 3查看 1.6K关注 0票数 0

我正在使用Struts2拦截器,容器在咨询配置管理器(struts.xml)后为相关的操作类创建操作代理。现在是执行拦截器链的时候了,我有一个简单的问题--到底是谁调用了Myinterceptor类中的intercept方法。

代码语言:javascript
复制
public class MyInterceptor  implements Interceptor{

    public void destroy() {
        // TODO Auto-generated method stub

    }

    public void init() {
        // TODO Auto-generated method stub

    }

    public String intercept(ActionInvocation ai) throws Exception {
        // TODO Auto-generated method stub
        long t1=System.currentTimeMillis();

        ValueStack s= ai.getStack();
        String val=s.findString("name");
        s.set("name", val.toUpperCase()+"_changed");

        return ai.invoke();

    }

}

根据我的理解,它是由相应action类的actionproxy调用的,在spring AOP中也是这样做的,在spring AOP中,proxyfactorybean会做类似的事情来调用类的advices (Pointcut)。

但我没有任何文档来支持这一点。请告诉我我是对的还是错的。

EN

回答 3

Stack Overflow用户

发布于 2015-03-08 05:47:11

您将其作为方法intercept的参数获取。您不必远离拦截器实例,因为调用者在拦截时会将自身传递给每个拦截器实例。

调用此方法的位置是DefaultActionInvocation

公共类DefaultActionInvocation扩展了对象实现ActionInvocation

默认的ActionInvocation实现

票数 0
EN

Stack Overflow用户

发布于 2015-03-09 18:12:25

ActionInvocation类

开始执行Action.

  • ActionInvocaton时,
  1. 框架首先调用ActionInvocation的invoke()方法,通过执行堆栈中的第一个拦截器来启动调用过程。
票数 0
EN

Stack Overflow用户

发布于 2015-06-11 19:27:23

您的截取必须重写接口Interceptor的方法intercept()。只需在方法中添加@Override注释即可。

代码语言:javascript
复制
@Override
public String intercept(ActionInvocation ai) throws Exception {
   //your code
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28920086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档