1

プロジェクトで次のコードを実行しようとしています。プロジェクト全体は正常に動作しますが、インターセプター部分には結果が表示されません。インターセプターを実行するために行う唯一の変更は、インターセプタータグを追加して struts.xml ファイルで行うことですか??

enter code here  
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<constant name="struts.devMode" value="true"/>
<package name="default" namespace="/" extends="struts-default">
   <interceptors>  
   <interceptor name="timer" class=".."/>
   <interceptor name="logger" class=".."/>
   </interceptors>
   <action name="HelloWorld">
      <result>/HelloWorld/HelloWorld.jsp</result>
      <interceptor-ref name="timer"/>
      <interceptor-ref name="logger"/>
    </action>
    <action name="SayHello" class="com.sapient.test.HelloAction">

        <result name="SUCCESS">/HelloWorld/DisplayHello.jsp</result>
        <result name="INPUT">/HelloWorld/HelloWorld.jsp</result>
           <interceptor-ref name="timer"/>
           <interceptor-ref name="logger"/>

    </action>
</package>  

インターセプターのコードを追加したとき、Web アプリの残りの部分は正常に機能していたことに注意してください。Web アプリの残りの部分はそのまま実行されますが、インターセプター部分は機能していません。サーバーとディレクトリを複数回クリーニングしようとしましたが、効果がありませんでした。助けてください。

4

1 に答える 1

0

以下のように struts.xml でインターセプターを設定してください。

 <interceptor name="loginInterceptor" class="......." />
        <interceptor-stack name="loginInterceptorStack">
          <interceptor-ref name="loginInterceptor" />
          <interceptor-ref name="defaultStack" />
    </interceptors>

次に、インターセプター スタックをアクションに適用します。

  <action name="..." class=".....">
        <interceptor-ref name="loginInterceptorStack"></interceptor-ref>
        <result name="input">.....</result>
        <result name="success">...../result>
    </action>

アクション構成の結果の前にインターセプターを追加します。また、インターセプターに適切なログを追加して、インターセプターが呼び出されたデフォルトスタックを呼び出す前に知ることができます。

于 2012-11-21T11:19:09.093 に答える