我试图在 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 参数。
我的问题是我不知道如何从这个 AOP 建议访问当前的 HttpServletRequest 和 HttpServletResponse 而不使用这两个作为(未使用的)参数到带注释的方法,这是我首先试图避免的。
摘要:如何通过 @RequestMapping 注释方法的 AOP 建议访问 HttpServletRequest/Response?