在Struts2中从堆栈中删除拦截器

时间:2012-12-12 10:26:13

标签: java struts2 struts2-interceptors interceptorstack

struts.xml中,我已将tokenSession拦截器包含在我的拦截器堆栈中,以验证每个请求的令牌。不幸的是,对于AJAX请求,这种方法效果不佳。我在执行invalid.token时收到actionInvocation.invoke()响应。

因此,我想停止为AJAX请求执行tokenSession拦截器(单独)。我有一个自定义拦截器(日志记录),它在tokenSession拦截器之前被调用。是否可以根据请求类型(如果是AJAX请求)从日志拦截器中的堆栈中删除tokenSession拦截器?

2 个答案:

答案 0 :(得分:2)

令牌拦截器扩展MethodFilterInterceptor,这意味着您可以排除在方法名称上执行拦截器基础。

在你的拦截器堆栈中配置它:

<interceptor-ref name="token">
   <param name="excludeMethods">your_ajax_methods_comma_separated</param>
</interceptor-ref>

另一种解决方案是为您的AJAX操作使用不同的拦截器堆栈。

答案 1 :(得分:2)

为您的Action使用不同的拦截器堆栈,或对不同的包使用不同的拦截器堆栈,并将所有操作分组到正确的包中。