2017-02-17 3 views
0

フィルタとインターセプタを使用して、コントローラメソッドから送信されたレスポンスを修正しようとしましたが、フィルタまたはインターセプタを実行する前に応答がコミットされませんでした。 私は、ResponseBodyAdviceで別のオプションがあることを知っていましたが、HTTPステータスに基づいてレスポンスを変更することを意図しているため、正しい場所ではありません。いずれかのアイデアがあれば教えてください、私はどのように春のブーツとレストで達成することができますレスポンスが残りのコントローラから送信されました

+0

"HTTPステータスに基づいて応答を変更する"この状態はどうやって取得していますか?コントローラメソッドの1つを投稿してください。また、そのコントローラーメソッドからの応答で何をしたいのかを記述します。 –

+0

@RamanujanR ResponseBodyAdviceではなく、FilterとInterceptorの中のレスポンスオブジェクトからステータスに応答できます。 – Nadendla

答えて

0

はい、あなたはそれを行うことができます。インターセプターを作成する必要があるXYZというクラスを作成し、そのクラスをHandlerInterceptorAdapterクラスに拡張します。

preHandle(...) 
postHandle(...) 
afterConcurrentHandlingStarted(...) 
afterCompletion(...) 

だから、あなたの必要性に応じて、あなたはすなわち、最後の方法で使用することができます:afterCompletion(...)方法を、理由は次のように私が覚えている限りでは、このクラスは、あなたがオーバーライドできる4つの方法がありますこのメソッドは、クライアントにビューをレンダリングする準備ができたら実行されます。
xmlパターンを使用している場合は、そのクラスXYZを<mvc:interceptor>タグ内のbeanとして登録する必要があります。

+0

私が述べたように、アフターコンプリートを実行する前に、レスポンスがコミットされます。したがって、応答がコミットされたら、何もできません – Nadendla

+0

次にpostHandle()メソッドを使用して、ビューを最終的に変更します.. @ user3004406 –

関連する問題