0

1 つのアクション クラスと 1 つのインターセプターを持つ単純な struts2 Web アプリケーションがあります。getTitle()アクション クラスには、セッションから文字列を取得するgetter メソッドがあります。インターセプターはデフォルト スタックの一番下にあるため、呼び出しの最後と最初に実行されます。これは、アクション呼び出しの BEFORE および AFTER 呼び出しのセッションにあるタイトルを変更できるように構築されています。結果の JSP ページには、このタイトルが表示されます。

次のロジックが適用されると思いました。

  1. 呼び出し実行前のインターセプター ロジック
  2. アクション クラス ロジックの実行
  3. 呼び出し実行後のインターセプター ロジック
  4. struts は結果を認識し、結果の.jspページを取得します
  5. struts は、アクション クラスの<:s>タグ.jspと呼び出しを埋めます。getTitle()

しかし、これはうまくいきませんでした。結果の JSP には、ステップ 3 が実行される前のタイトルが常に表示されていました。Javaコードに簡単なログを追加したところ、私の疑いが確認されました。実行順序は次のとおりです。

  1. ログ: 呼び出しが実行される前のインターセプター ロジック
  2. ログ: アクション クラス ロジックの実行
  3. log:getTitle()アクション クラスからのメソッドが実行されます
  4. ログ: 呼び出し実行後のインターセプター ロジック

どういうわけか、ステップ 6 がステップ 3 になりました。これはなぜですか。また、タイトルを変更するアクション呼び出しの後にインターセプターにロジックを追加するにはどうすればよいですか?

4

1 に答える 1

1

PreResultListener一言で言えば、レンダリングの前に、しかし呼び出しの後に何かが起こるように実装します。

http://struts.apache.org/release/2.3.x/docs/writing-interceptors.html

何が何であるかはわかりませんがtitle、ページ タイトルやドメイン オブジェクトからの本のタイトルなどに関連するものがなぜ必要なのかを理解するのに苦労しています。

  1. アクションによって取得される、または
  2. インターセプターによって変更される
于 2014-07-29T17:30:51.070 に答える