【发布时间】:2019-01-27 06:32:31
【问题描述】:
我正在做 Spring MVC 的演示。我创建了带有数据主体的 ajax 调用 post 请求,但 Spring 似乎无法识别我的请求及其参数(返回状态 415)。它甚至不能调用我的控制器。
var jsonSTr = JSON.stringify(products);
var data = {};
data["products"] = jsonSTr;
$.ajax({
type: "POST",
url: urlReq, --> "/mastercard/render"
data: JSON.stringify(data),
beforeSend: function (xhr) {
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
},
}).done(function (data, textStatus, jqXHR) {
console.log(textStatus);
});
这是我的java代码
@RequestMapping(value="/mastercard/render", method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ModelAndView renderToMasterCardForm(@RequestBody CheckoutRenderRequest checkoutRenderRequest) {
List<Product> paidProducts = this.jsonToListProduct(checkoutRenderRequest.getProducts());
ModelAndView viewModel = new ModelAndView("mastercardform");
Response response = new Response();
response.status = "ok";
response.url = "mastercardform";
response.price = String.valueOf(paidProducts.parallelStream().collect(Collectors.summarizingDouble(Product::getPrice)).getSum());
;
viewModel.addObject("result", response);
return viewModel;
}
CheckoutRequest 类
private static class CheckoutRenderRequest {
private String products;
public String getProducts() {
return products;
}
public void setProducts(String products) {
this.products = products;
}
}
我已经尝试过这么多的解决方案,但它仍然不起作用。我的代码引用自这些网站https://www.javacodegeeks.com/2013/09/spring-mvc-ajax-jquery.html、POST JSON fails with 415 Unsupported media type, Spring 3 mvc、http://www.mkyong.com/spring-mvc/spring-4-mvc-ajax-hello-world-example/,但它们没有帮助。我真的不知道我做错了什么,请帮忙。
【问题讨论】:
标签: jquery ajax spring spring-mvc