3

私のアプリケーション(春を使用)では、

春の公開Beanを使用して、ビューからメソッドを呼び出そうとしています。ビューからメソッドを呼び出そうとすると、エラーがスローされます。HandlerExceptionResolver でキャッチしようとしましたが、うまくいきませんでした。コントローラーに例外がスローされなかったため、HandlerExceptionResolver では処理できないと思います。

そのため、例外がスローされたときにリクエストをリダイレクトする別の方法を試します。アスペクトにはそれができる可能性があると思います。アスペクトから例外がスローされたときにリクエストをリダイレクトすることは可能ですか?

4

1 に答える 1

4

当然のことHandlerExceptionResolverながら、ビュー内から例外がスローされた場合は呼び出されません。これらのリゾルバーは、コントローラーの例外を特に対象としています。

ここでの最善のオプションは、aを使用してメソッドHandlerInterceptorをオーバーライドすることです。このafterCompletionメソッドには、ビューによってスローされた例外が含まれます。ビューによって応答がすでにコミットされているかどうかによっては、ここからリダイレクトを送信できる場合があります。

ここでも、アスペクトがどのように役立つかわかりません。この仕事のためのツールではありません。

ただし、JSPで公開されたBeanの使用を停止することをお勧めします。魅力的に便利だと思いますが、これは使うのが面倒なことです。コントローラがビューに必要なすべてのデータをアセンブルし、モデルに貼り付けて、ビューに送信することをお勧めします。そうすれば、ビューに必要なものがすべて揃っているため、ビューが例外をトリガーする危険性が少なくなります。

また、リダイレクトを送信する必要がある場合は、ビューの実行を開始する前にこれを行う必要があります。そうしないと、例外がスローされる前に、ビューレイヤーがHTTP応答ヘッダーの書き込みを開始する可能性があります。これが発生した場合、代わりにリダイレクトを送信できなくなります。応答は「コミット」されます。

于 2010-12-12T09:02:37.553 に答える