当前位置: 首页 > 知识库问答 >
问题:

在同一控制器方法中@RequestBody和 HttpServletRequest

郭业
2023-03-14

我遇到了一种情况,在处理请求之前,我必须更新它。基本上,我必须用一个可以随时间变化的属性来更新请求。要求消费者随请求一起发送属性是不实际的..所以,我觉得唯一的办法就是..在处理请求之前,更新控制器方法中的请求..

@RequestMapping(value="/**", method=RequestMethod.POST)
public void processRequest(HttpServletRequest servletRequest, HttpServletResponse response )

到目前为止,控制器方法中使用了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 )

请建议...

共有1个答案

冉锋
2023-03-14

这很好,并得到了Spring的支持。事实上,我刚刚完成了一个控制器方法的编写,该方法与您在示例中使用的方法几乎完全相同。Spring是非常灵活的,允许用@RequestMapping装饰的方法。根据文档:

@RequestMapping处理程序方法具有灵活的签名,可以从一系列受支持的控制器方法参数和返回值中进行选择。...下表显示了支持的控制器方法参数。

[ 完整表格见文档 ]

在可接受的参数类型表中,它特别允许< code>HttpServletRequest、< code>HttpServletResponse和用< code>@RequestBody批注的对象。

因此,您应该根据您的发现,确定其他人正在这样做的事实,以及具体提到它的文档。

 类似资料:
  • 问题内容: 使用SceneBuilder。我有2个阶段,每个阶段都有一个控制器: , 。 Stage1Controller: Stage2Controller: 这是使用2种方法 (称为in 方法)将这两个fxml文件加载到Main.java类中的方式: 该方法在第一阶段中用作方法,它在两个阶段都转换视图。 如何输入方法?谢谢 问题答案: “快速又脏”的方法是给的引用: 现在在您的主应用程序中:

  • 我需要创建一个接受RequestBody或RequestPart的单个endpoint。 如果请求包含RequestPart,它将执行一些逻辑来处理MultipartFile,否则它将处理RequestBody中传递的对象。 但是,当发送多部分请求时,它会失败,并出现以下错误: 请注意,引用了RequestBody参数。 null null

  • 我有一个SpringRest网络应用程序,包含一个通用的Rest控制器,如下所示。在Jackson将对象序列化到JSON的情况下,GET方法运行良好。但是,当我尝试调用保存方法时,请求体参数将被转换为LinkedHashMap,而不是由T泛型类型定义的类型。 JSON: 我得到以下错误: HTTP状态500-请求处理失败;嵌套异常是org.springframework.beans.NotRead

  • 我有两个控制器和。 在中,我有一个名为的方法。 如何在中访问此方法?

  • 问题内容: 为什么无法从另一个内部访问其他控制器方法呢? 像这样。 已编译 如果您不能这样做,那为什么不呢?我还应该怎么做… 问题答案: 最近几个小时遇到相同的问题。我使用了api / services文件夹。它可能不完全是您所需要的,但是它是一个选择。

  • 问题内容: 我想在控制器中调用视图方法,但我不知道如何:)我寻求类似的示例,但没有找到它。我可以在这段代码中这样做吗?我是否必须重新构建?我使用javafx和fxml技术(来构建用户界面)。 我的视图文件(它具有gotoRegister()和gotoLogin()方法(我想调用它们)) 我的控制器(在这里我想调用gotoRegister()方法) 我的问题:我可以调用gotoRegister吗?或