我正在使用Struts2拦截器,在咨询配置管理器(struts.xml
)后,容器为相关的操作类创建Action代理。现在是时候执行拦截器链了,我有一个简单的问题 - 谁在Myinterceptor
类中调用了截距方法。
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();
}
}
根据我的理解,它由相应的动作类的actionproxy调用,在spring AOP中完成相同的行,其中proxyfactory bean执行类似的操作来调用类(切入点)的建议。 / p>
但我没有任何文件可以支持这一点。 请让我知道我是对的。
答案 0 :(得分:0)
您将其作为方法intercept
的参数。您不必大范围地远离拦截器实例,因为调用者在拦截时将自身传递给每个拦截器实例。
调用此方法的位置是DefaultActionInvocation
public class DefaultActionInvocation extends Object implements ActionInvocation
默认ActionInvocation实现
答案 1 :(得分:0)
ActionInvocation类
Framework首先调用ActionInvocation的invoke()方法来开始执行Action。
ActionInvocaton通过执行堆栈中的第一个拦截器来启动调用过程。
答案 2 :(得分:0)
您的拦截必须覆盖界面intercept()
的方法Interceptor
。只需在方法中添加@Override
注释即可。
@Override
public String intercept(ActionInvocation ai) throws Exception {
//your code
}