我遇到的情况是,我必须在处理请求之前更新该请求。基本上,我必须使用可以随时间变化的属性来更新请求。要求消费者随请求一起发送属性是不切实际的。所以,我觉得唯一的方法是......在处理请求之前更新控制器方法中的请求。
@RequestMapping(value="/**", method=RequestMethod.POST)
public void processRequest(HttpServletRequest servletRequest, HttpServletResponse response )
Run Code Online (Sandbox Code Playgroud)
到目前为止,HttpServletRequest 都用在控制器方法中。然后将请求作为流读取,然后转换为 json 字符串以进行处理。我正在考虑用 @RequestBody 替换它,并将请求读入 pojo,然后更新,然后处理。但是,我还需要 HttpServletRequest 中的 pathInfo 来识别我需要处理哪个 uri 的请求。
那么,我可以在同一个方法中同时使用 @RequestBody 和 HttpServletRequest 吗?我尝试了一下,没有看到任何问题..但是,我想检查是否有任何我遗漏的东西..
@RequestMapping(value="/**", method=RequestMethod.POST)
public void processRequest(@RequestBody final DateRequest request, HttpServletRequest servletRequest, HttpServletResponse response )
Run Code Online (Sandbox Code Playgroud)
请指教..
这很好,并且得到 Spring 的支持。事实上,我刚刚编写了一个与您在示例中使用的方法几乎相同的控制器方法。Spring 非常灵活,允许使用@RequestMapping. 根据文档:
@RequestMapping处理程序方法具有灵活的签名,可以从一系列受支持的控制器方法参数和返回值中进行选择。...下表显示了支持的控制器方法参数。[完整表格请参阅文档]
在可接受的参数类型表中,它特别允许HttpServletRequest、HttpServletResponse和 用 注释的对象@RequestBody。
因此,根据您的发现,您应该了解其他人正在这样做的事实以及专门提到它的文档。
| 归档时间: |
|
| 查看次数: |
5831 次 |
| 最近记录: |