我在我的 struts.xml 中写了这个拦截器堆栈
<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-i 是我的自定义拦截器。我不使用这个拦截器
<interceptor-ref name="i18n"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="validation">
但是,我的操作是 Preparable、ModelDriven 和 Validateable 工作得很好......为什么?
追问:我省略了一个重要细节:拦截器栈定义在第一个包中,被所有子包继承。
更准确地说,我想问这个:为什么如果我的操作实现了 Preparable<interceptor-ref name="prepare"/>
,并且我的自定义堆栈中没有拦截器 ' ',那么prepare方法会被正确调用吗?