Java 如何在spring mvc上同时接收转换后的原始请求正文
我已经实现了Jaxb2RootElementHttpMessageConverter,用于将XML请求转换为我的java对象,它可以正常工作。我的控制器看起来像Java 如何在spring mvc上同时接收转换后的原始请求正文,java,spring,rest,spring-mvc,Java,Spring,Rest,Spring Mvc,我已经实现了Jaxb2RootElementHttpMessageConverter,用于将XML请求转换为我的java对象,它可以正常工作。我的控制器看起来像 @RequestMapping(value = "/post", method = RequestMethod.POST) public MyResponse post(@RequestBody MyRequest request, BindingResult result) 我希望同时接收原始xml请求以存储日志和转换的java对象
@RequestMapping(value = "/post", method = RequestMethod.POST)
public MyResponse post(@RequestBody MyRequest request, BindingResult result)
我希望同时接收原始xml请求以存储日志和转换的java对象以进行验证,以及其他类似的过程
@RequestMapping(value = "/post", method = RequestMethod.POST)
public MyResponse post(@RequestBody String originalRequest, @RequestBody @Valid MyRequest request, BindingResult result)
我试图将响应主体作为HttpServletRequest的InputStream获取,但我得到了IOException:Stream closed
如果我想让Spring进行转换和验证而不是我的代码,该怎么做?示例中的控制器方法的构造方式,
String
参数需要两个独立的内置HttpMessageConverter
,MyRequest
参数需要两个独立的内置HttpMessageConverter
。但是,默认的Spring MVC实现在第一个能够成功读取请求的消息转换器处终止请求处理(请参见AbstractMessageConverterMethodArgumentResolver
)。因此,您将无法使用默认实现用同一请求填充两个不同的方法参数。@谢谢,但我想问的是如何从“Jaxb2RootElementHttpMessageConverter”原始和转换的消息接收一些不同的内容。您不能<代码>消息转换器s不提供原始文本。您可以在控制器方法中将请求封送为字符串
或对象
,然后使用某种实用函数生成另一个,将其转换为另一个。示例中控制器方法的结构方式,String
参数需要两个独立的内置HttpMessageConverter
,MyRequest
参数需要两个独立的内置HttpMessageConverter
。但是,默认的Spring MVC实现在第一个能够成功读取请求的消息转换器处终止请求处理(请参见AbstractMessageConverterMethodArgumentResolver
)。因此,您将无法使用默认实现用同一请求填充两个不同的方法参数。@谢谢,但我想问的是如何从“Jaxb2RootElementHttpMessageConverter”原始和转换的消息接收一些不同的内容。您不能<代码>消息转换器s不提供原始文本。您可以在控制器方法中将请求封送为字符串
或对象
,然后使用某种实用函数生成另一个,将其转换为另一个。