Tom*_*mas 8 java aop spring annotations
我试图在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";
}
}
Run Code Online (Sandbox Code Playgroud)
在此我检查HttpServletRequest中的一些http属性,如果此属性具有特定值,则使用HttpServletResponse发送重定向.完成此检查的是此应用程序中的很多(但不是全部)表单控制器.我想要做的是创建一个由一些AOP建议处理的@CheckedSubmit注释来执行此检查,然后从控制器中删除HttpServletRequest和HttpServletResponse参数.
我的问题是我不知道如何从这个AOP建议中访问当前的HttpServletRequest和HttpServletResponse而不将这两个作为(未使用的)参数用于带注释的方法,这是我首先想要避免的.
简介:如何在@RequestMapping带注释的方法上从AOP建议访问HttpServletRequest/Response?
小智 13
两个解决方案的摘要,但不是你的整个问题(完全)
解决方案1:内部建议(> =需要Spring 2.0)
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.getRequestAttributes()).getRequest();
Run Code Online (Sandbox Code Playgroud)
解决方案2:内部方面类(可能需要Spring 3.0内部的singelton bean!)
@Autowired(required=true)
private HttpServletRequest request;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13568 次 |
| 最近记录: |