我正在尝试通过 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中与杰克逊相关的依赖关系 -
<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对象在控制器中出现null。
这与Spring和Spring MVC之间的区别有关吗? - 为noob问题道歉。我的控制器类仅使用@Controller
进行注释。
如何修改此能够将AJSON中的JSON对象发送到Spring POST控制器?最后,我想发送一个包含5个对象的数组。
请帮忙。
由于
答案 0 :(得分:1)
添加消费属性
@RequestMapping(value = "/ab/greeting", method=RequestMethod.POST,headers = "Accept=*/*",produces = "application/json", consumes="application/json")
public String greetingSubmit(@RequestBody Person p1) {
return "result";
}
答案 1 :(得分:0)
将数据从您的视图写入js控制台,并检查数据是否为空