стек перехватчиков struts2 - PullRequest
       20

стек перехватчиков struts2

0 голосов
/ 21 октября 2010

Я записываю в файл 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 вызывается правильно?

Ответы [ 2 ]

1 голос
/ 22 октября 2010

Что именно вы имеете в виду под этим?

мои действия, которые можно подготовить, ModelDriven и Validateable хорошо работают

Вы имеете в виду, что перехватчики, кажется, применяются, например, применяется декларативная проверка? (Вы можете проверить, что каждый стандартный перехватчик должен делать здесь )

Если это так, вы должны убедиться, что ваш стек эффективно используется в вашем действии, указав его в отображении действия или глобально (код, который вы разместили просто , определяет стек) .

0 голосов
/ 30 июля 2015

Они включены в 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>
...