繁体   English   中英

在Spring Controller方法中发布JavaScript对象数组并映射到Java域

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM