2010-10-21 119 views
0

我在struts.xml中写这个拦截器栈struts2的拦截器堆栈

<interceptor-stack name="project-interceptors-stack">            
    <interceptor-ref name="my1-i" /> 
    <interceptor-ref name="my2-i" />     
    <interceptor-ref name="paramsPrepareParamsStack" /> 
    <interceptor-ref name="logger" /> 
    <interceptor-ref name="timer" /> 
</interceptor-stack> 

其中MY1-i和MY2,我是我的自定义拦截器。 我不使用这个拦截

<interceptor-ref name="i18n"/> 
<interceptor-ref name="prepare"/> 
<interceptor-ref name="modelDriven"/> 
<interceptor-ref name="validation"> 

但是,我的行动的,这是制备的,模型驱动和Validateable正常工作......为什么?

后续:我省略了一个重要的细节:拦截器堆栈在第一个包中定义并由所有子包继承。

更确切地说我想问问这样的:如果我的行动实现了为什么制备的,和我没有拦截在我的自定义堆栈“<interceptor-ref name="prepare"/>”,该准备方法正确调用?

+0

请用回答来解答。如果您需要为您的问题添加详细信息,只需编辑它。 – 2010-10-22 23:03:01

回答

1

你是什么意思呢?

我的动作,也就是制备的, 模型驱动和Validateable做工精良

你的意思是拦截器似乎被应用,例如,声明式验证应用? (您可以检查了每个标准的拦截是应该做的here

如果是的话,你应该检查你的筹码在你的行动有效地使用,通过在动作映射或globally(您发布只是代码指定它定义堆栈)。

0

这些包含在paramsPrepareParamsStack中。下面是根据struts-default.xml定义的,

<interceptor-stack name="paramsPrepareParamsStack"> 
      <interceptor-ref name="exception"/> 
      <interceptor-ref name="alias"/> 
      <interceptor-ref name="i18n"/> 
      <interceptor-ref name="checkbox"/> 
      <interceptor-ref name="datetime"/> 
      <interceptor-ref name="multiselect"/> 
      <interceptor-ref name="params"/> 
      <interceptor-ref name="servletConfig"/> 
      <interceptor-ref name="prepare"/> 
      <interceptor-ref name="chain"/> 
      <interceptor-ref name="modelDriven"/> 
      <interceptor-ref name="fileUpload"/> 
      <interceptor-ref name="staticParams"/> 
      <interceptor-ref name="actionMappingParams"/> 
      <interceptor-ref name="params"/> 
      <interceptor-ref name="conversionError"/> 
      <interceptor-ref name="validation"> 
       <param name="excludeMethods">input,back,cancel,browse</param> 
      </interceptor-ref> 
      <interceptor-ref name="workflow"> 
       <param name="excludeMethods">input,back,cancel,browse</param> 
      </interceptor-ref> 
     </interceptor-stack>