【发布时间】:2016-11-13 21:48:12
【问题描述】:
我正在尝试通过 AJAX 将 JSON 对象发送到 Spring 控制器,但收到错误 415:
"The server refused this request because the request entity is in a format not supported by the requested resource for the requested method."
我的 Spring 控制器看起来像这样,并且在 Tomcat 7 上运行 -
@RequestMapping(
value = "/ab/greeting",
method=RequestMethod.POST, headers = "Accept=*/*",
produces = "application/json")
public String greetingSubmit(@RequestBody Person p1) {
return "result";
}
Person 类是这样定义的 -
package ab;
public class Person {
String fname;
String lname;
}
这是我的 javascript 调用 -
function getGreeting() {
$.ajax({
url : "/ab/greeting",
contentType: "application/json",
type: 'POST',
async: false,
data: JSON.stringify({ fname: "John", lname: "Doe" }),
success: function (data) {
}
});
}
这是我的 POM 中与 Jackson 相关的依赖项 -
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
</dependency>
具有讽刺意味的是,当我在 Spring Boot 上尝试它时它就可以工作。
在 Tomcat 上,我还尝试使用 @ModelAttribute 代替 @RequestBody - 在这种情况下,请求返回 error code 200 但 p1 对象在控制器中为空。
这是否与 Spring 和 Spring MVC 的区别有关? - 为菜鸟问题道歉。我的控制器类仅使用@Controller 进行注释。
如何修改它以便能够将 JSON 对象从 AJAX 发送到 Spring POST 控制器?最后,我想发送一个包含 5 个对象的数组。
请帮忙。
谢谢
【问题讨论】:
-
您可以尝试将 jquery ajax 邮政编码替换为 contentType: "application/json", data: JSON.stringify({ "fname": "John", "lname": "Doe" }) , cache: false, processData: false 也尝试在spring控制器中替换这个@RequestMapping(value = "/ab/greeting", method=RequestMethod.POST)
-
可能是这个问题的重复:stackoverflow.com/questions/11492325/…
-
感谢您的回复...我都试过了,但得到的结果和以前一样
标签: json ajax spring spring-mvc