Jquery 将Ajax POST发送的JSON对象映射到Spring MVC模型
您好,朋友们,我正在处理这个问题,从2天,并没有能够解决。我希望stackoverflow能帮助我 问题:我通过ajax发送了JSON对象,在后端我有一个类(名为:SalesCommandObject),其中包含其他模型的对象、这些模型的getter和setter。 然后尝试将类型为“SalesCommandObject”的JSON对象发送到控制器方法。这样json数据就可以映射到模型数据中 但服务器抛出错误:“400错误请求:客户端发送的请求在语法上不正确” 我发布了整个代码。请检查并帮助我 //Ajax POST的代码:Jquery 将Ajax POST发送的JSON对象映射到Spring MVC模型,jquery,json,ajax,spring,Jquery,Json,Ajax,Spring,您好,朋友们,我正在处理这个问题,从2天,并没有能够解决。我希望stackoverflow能帮助我 问题:我通过ajax发送了JSON对象,在后端我有一个类(名为:SalesCommandObject),其中包含其他模型的对象、这些模型的getter和setter。 然后尝试将类型为“SalesCommandObject”的JSON对象发送到控制器方法。这样json数据就可以映射到模型数据中 但服务器抛出错误:“400错误请求:客户端发送的请求在语法上不正确” 我发布了整个代码。请检查并帮助我
var salesCommandObject = {};
salesCommandObject.CustomerInfo =
{
"address1": "Address_1",
"city": "City",
"pin": "PIN"
};
salesCommandObject.SalesModel =
{
"locality":'Loc1',
"shippingType":'Regular',
"shippingCost":20
};
$.ajax
({
type: "POST",
dataType : 'json',
async : true,
url: "http://localhost:8080/OnlineStore/kmsg/grocery/SaveSalesOrder",
data : JSON.stringify(salesCommandObject),
contentType: "application/json; charset=utf-8"
}).done(function(data,type,xml)
{
alert("result");
console.log(data);
}).fail(function()
{
alert("Something Bad Happened, Service failed");
})
//接收JSON对象的控制器代码:
@RequestMapping(value = "/SaveSalesOrder", method = RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody String SaveCustomerOrder(@RequestBody SalesCommandObject salesCommandObject) throws Exception
{
CustomerModel cust = salesCommandObject.getCustomerInfo();
SalesModel sale = salesCommandObject.getLocality();
System.out.println(cust.getAddress1());
System.out.println(sale.getLocality());
return "Success";
}
//类模型salesCommandObject的代码
public class SalesCommandObject
{
private CustomerModel CustomerInfo = new CustomerModel();
private List<SalesItemsModel> salesData ;
private SalesModel salesModel = new SalesModel();
private SalesDeliverySlotsModel salesDelSlotsModel = new SalesDeliverySlotsModel();
private List<ItemsForSaleModel> itemsforSale ;
// getters and setters here//
}
公共类SalesCommandObject
{
private CustomerModel CustomerInfo=新CustomerModel();
私有列表数据;
private SalesModel SalesModel=新SalesModel();
private SalesDeliverySlotsModel salesDelSlotsModel=新的SalesDeliverySlotsModel();
私人物品清单;
//这里有接球手和接球手//
}
朋友们,我已经解决了这个问题:
我还没有在模型中声明默认构造函数,这就是为什么我通过ajax发送的数据类型与接收端的控制器参数中的数据类型不匹配。此外,pom.xml中的jackson版本设置不正确。
必须记住的几件事是:
Json对象的键值必须与set方法名匹配:
例如,如果:Json数据是{“key1”:“value”,“keyTwo”:“value123”}
那么二传手:
setKey1(){}
setKeyTwo(){}
此外,在所有使用的模型类中都必须有公共默认构造函数,我们将在其中映射json数据
谢谢。数据如何
“Location”:'Loc1'
它被映射了吗?是的,我的朋友单引号或双引号不会太麻烦json,两者都将被视为字符串数据如果数据是变量,那么你不必给出任何引号。你能发布你的模型类详细信息吗。CustomerInfo
和SalesModel