【Struts2】学习和了解拦截器(3)-- 拦截器栈中的拦截器参数覆盖问题

 

     直接贴示例,示例也摘自 官方 Interceptor 向导文档:设置 defaultStack 拦截器栈中的 validation 拦截器(实现类是  org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor)的excludeMethods参数,以及 workflow拦截器(实现类是  com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor)中的excludeMethods参数。
     
     第一种方法:
 
< action   name =   "myAction"   class   =  "myActionClass" >
     < interceptor-ref   name   =  "exception" />
     < interceptor-ref   name   =  "alias" />
     < interceptor-ref   name   =  "params" />
     < interceptor-ref   name   =  "servletConfig" />
     < interceptor-ref   name   =  "prepare" />
     < interceptor-ref   name   =  "i18n" />
     < interceptor-ref   name   =  "chain" />
     < interceptor-ref   name   =  "modelDriven" />
     < interceptor-ref   name   =  "fileUpload" />
     < interceptor-ref   name   =  "staticParams" />
     < interceptor-ref   name   =  "params" />
     < interceptor-ref   name   =  "conversionError" />
     < interceptor-ref   name   =  "validation" >
         < param   name =   "excludeMethods"   > myValidationExcudeMethod   </   param >
     </ interceptor-ref   >
     < interceptor-ref   name   =  "workflow" >
         < param   name =   "excludeMethods"   > myWorkflowExcludeMethod   </   param >
     </ interceptor-ref   >
</ action >
 
     第二种方法:
 
< action   name =   "myAction"   class   =  "myActionClass" >
   < interceptor-ref   name   =  "defaultStack" >
     < param   name =   "validation.excludeMethods"   > myValidationExcludeMethod   </   param >
     < param   name =   "workflow.excludeMethods"   > myWorkflowExcludeMethod   </   param >
   </ interceptor-ref   >
</ action
 
     显然第一种方法挺麻烦的,如果有多个 action 都需要设置,那么得不停的拷贝粘贴那些重复的 interceptor-ref。第二种方法只需要设置该defaultStack中需要配置参数的 interceptor 的 参数即可,只是在 param.name 中加上 interceptor name 的前缀。

你可能感兴趣的:(拦截器,Interceptor,strut2)