我有一种情况,我必须在处理它之前更新请求。基本上,我将不得不用一个随时间变化的属性来更新请求。要求消费者发送属性以及请求是不切实际的。所以,我觉得唯一的方法是在处理它之前用控制器方法更新请求..
@RequestMapping(value="/**", method=RequestMethod.POST)
public void processRequest(HttpServletRequest servletRequest, HttpServletResponse response )
直到现在,HttpServletRequest用于控制器方法。然后将请求作为流读取,然后转换为json字符串以进行处理。我想用@RequestBody替换它,并将请求读入pojo,然后更新,然后处理。但是,我还需要来自HttpServletRequest的pathInfo来识别我需要处理请求的uID。
那么,我可以在同一个方法中同时使用@RequestBody和HttpServletRequest吗? 我试过了,我发现任何问题..但是,我想检查一下我是否有任何遗漏......
@RequestMapping(value="/**", method=RequestMethod.POST)
public void processRequest(@RequestBody final DateRequest request, HttpServletRequest servletRequest, HttpServletResponse response )
请告知..
答案 0 :(得分:2)
这很好,并得到Spring的支持。事实上,我刚刚编写了一个几乎与您在示例中使用的控制器方法完全相同的控制器方法。 Spring对于使用HttpServletRequest
修饰的方法所允许的内容非常灵活。根据{{3}}:
HttpServletResponse
处理程序方法具有灵活的签名,可以从一系列受支持的控制器方法参数和返回值中进行选择。 ...下表显示了支持的控制器方法参数。[见完整表格的文件]
在可接受的参数类型表中,它特别允许@RequestBody
,{{1}}和使用{{1}}注释的对象。
因此,根据您的调查结果,您应该设置其他人正在执行此操作的事实,以及特别提及的文档。