Spring フォーラムと StackOverflow を検索して、この質問に対する答えを見つけようとしました。恐ろしいアーキテクチャを説明し、私とほぼ同じことを求めているページをたくさん見つけましたが、意図した使用法は異なるので、ご容赦ください:-)
基本的に次のようなアノテーションベースのフォームコントローラーを使用するSpring 2.5プロジェクトがあります。
@RequestMapping("/edit/someObject")
public String handleSubmit(HttpServletRequest request, HttpServletResponse response, SomeObject someObject, BindingResult result) {
// Some check here
if(result.hasErrors()) {
return "form";
} else {
SomeObjectService.update(someObject);
return "redirect:/view/someObject";
}
}
ここでは、HttpServletRequest でいくつかの http プロパティをチェックし、このプロパティに特定の値がある場合は HttpServletResponse を使用してリダイレクトを送信します。このチェックは、このアプリケーションのフォーム コントローラの多く (すべてではない) で行われます。私がやりたいことは、このチェックを行うための AOP アドバイスによって処理される @CheckedSubmit アノテーションを作成し、コントローラーから HttpServletRequest および HttpServletResponse パラメーターを削除することです。
私の問題は、これら2つを注釈付きメソッドへの(未使用の)パラメーターとして使用せずに、このAOPアドバイスから現在のHttpServletRequestとHttpServletResponseにアクセスする方法がわからないことです。これは、最初に回避しようとしたことです。
概要: @RequestMapping アノテーション付きメソッドで AOP アドバイスから HttpServletRequest/Response にアクセスする方法は?