gpt4 book ai didi

java - Spring Boot Rest Controller 未将请求主体转换为自定义对象

转载 作者:行者123 更新时间:2023-12-02 07:50:11 25 4
gpt4 key购买 nike

我有使用 Spring 休息 Controller 的 Spring 启动应用程序。 这是 Controller ,下面是得到的响应。我正在使用 postman 工具向该 Controller 发送请求。并将内容类型发送为 application/json

    @RequestMapping(value = "/test", method = RequestMethod.POST)
public String test(@RequestBody WebApp webapp, @RequestBody String propertyFiles, @RequestBody String) {
System.out.println("webapp :"+webapp);
System.out.println("propertyFiles :"+propertyFiles);
System.out.println("propertyText :"+propertyText);

return "ok good";
}

2018-03-21 12:18:47.732  WARN 8520 --- [nio-8099-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver:已解决由处理程序执行引起的异常:org.springframework.http.converter.HttpMessageNotReadableException:I/O 读取输入消息时出错;嵌套异常是 java.io.IOException:流已关闭

这是我的 postman 请求

{
"webapp":{"webappName":"cavion17","path":"ud1","isQA":true},
"propertyFiles":"vchannel",
"propertytText":"demo property"}

我尝试删除 RequestBody 注释,然后能够访问服务,但接收到的 param 对象为 null。

那么请建议如何在restcontroller中检索对象?

最佳答案

您不能在 Spring 中使用多个 @RequestBody 注解。您需要将所有这些包装在一个对象中。

有些是这样的

// some imports here
public class IncomingRequestBody {
private Webapp webapp;
private String propertryFiles;
private String propertyText;

// add getters and setters here
}

在你的 Controller 中

@RequestMapping(value = "/test", method = RequestMethod.POST)
public String test(@RequestBody IncomingRequestBody requestBody) {
System.out.println(requestBody.getPropertyFiles());
// other statement
return "ok good";
}

在这里阅读更多内容 Passing multiple variables in @RequestBody to a Spring MVC controller using Ajax

关于java - Spring Boot Rest Controller 未将请求主体转换为自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49400507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com