2010-10-21 112 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>