Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在spring mvc上同时接收转换后的原始请求正文_Java_Spring_Rest_Spring Mvc - Fatal编程技术网

Java 如何在spring mvc上同时接收转换后的原始请求正文

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对象

我已经实现了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 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不提供原始文本。您可以在控制器方法中将请求封送为
字符串
对象
,然后使用某种实用函数生成另一个,将其转换为另一个。