[英]Posting an array of JavaScript Objects and Mapping to Java Domain in Spring Controller Method
我试图编写一个击中Spring Controller方法并提供一些请求参数的ajax发布请求,其中之一是JavaScript对象数组:vendorBillingDetails。 这些JavaScript对象具有匹配的Java域类,我想将它们映射到该域类。 这似乎是Spring MVC应该能够实现的功能,但是到目前为止,我只能使用仅带有一个请求参数的html表单来查找示例。
以下是我的控制器和ajax请求。 希望有人可以告诉我如何正确映射此映射,因为到目前为止我尝试过的所有操作都失败了。
$.ajax({
url : '/ui/clearBilling',
type : 'POST',
data : { "trackId": trackId, "vendorBillingDetails": vendorBillingDetails, "_csrf": csrf },
async : true,
success : function(data) {
jqAlert("Selected item(s) were cleared");
},
fail: function(e) {
jqAlert("There was an error with the request");
}
});
});
@RequestMapping(value = "/clearBilling", method = RequestMethod.POST)
public @ResponseBody String setClearVendorBillingPO(@RequestParam BigInteger trackId, @RequestParam(value = "vendorBillingDetails[]") List<VendorBillingDetail> vendorBillingDetails, HttpServletRequest request) {
//TODO stuff
}
我做过类似的事情,但是只发送了一个json对象,因此您可能需要将其调整或包装在另一个对象中,该对象包含您关心的所有请求参数。 尝试使用@RequestBody批注。
@RequestMapping(value = "/clearBilling", method = RequestMethod.POST)
public @ResponseBody String setClearVendorBillingPO(@RequestBody List<VendorBillingDetail> vendorBillingDetails, HttpServletRequest request) {
//TODO stuff
}
在ajax调用中,您可以使用JSON.stringify()(json2.js的一部分)
$.ajax({
url : "/ui/clearBilling",
type : "POST",
async : true,
data : JSON.stringify(vendorBillingDetails),
contentType : "application/json"
});
这是行不通的。 不知何故,对象数组上的RequestMapping最终在控制器的接收端出错。 最好尝试以JSON正文形式发送,然后在spring控制器中解组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.