0

このインターセプター スタックを 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"/>を実装していて、カスタムスタックにインターセプター ' ' がない場合、準備メソッドが正しく呼び出されるのはなぜですか?

4

2 に答える 2

1

これは正確にはどういう意味ですか?

Preparable、ModelDriven、および Validateable である私のアクションはうまく機能します

宣言的な検証が適用されるなど、インターセプターが適用されているように見えるということですか? (ここで、各標準インターセプターが何をすべきかを確認できます)

その場合は、アクション マッピングまたはグローバルにスタックを指定して、スタックがアクションで効果的に使用されていることを確認する必要があります(投稿したコードはスタックを定義するだけです)。

于 2010-10-21T20:44:15.997 に答える
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>
于 2015-07-29T23:02:05.447 に答える