Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript将对象发送到使用json的Spring控制器_Javascript_Jquery_Ajax_Json_Spring Mvc - Fatal编程技术网

如何使用JavaScript将对象发送到使用json的Spring控制器

如何使用JavaScript将对象发送到使用json的Spring控制器,javascript,jquery,ajax,json,spring-mvc,Javascript,Jquery,Ajax,Json,Spring Mvc,我正在制作简单的Spring MVC web应用程序。在我的应用程序中,我想将一个对象从前端发送到Spring控制器方法。但是当我这样做的时候,我得到了一个错误 500 (Internal Server Error) 我试图在网上找到一个好答案,但还是找不到一个好答案 我的控制器方法是 @RequestMapping(value = "/add", method = RequestMethod.GET, consumes = { MediaType.APPLICATION_JS

我正在制作简单的Spring MVC web应用程序。在我的应用程序中,我想将一个对象从前端发送到Spring控制器方法。但是当我这样做的时候,我得到了一个错误

500 (Internal Server Error)
我试图在网上找到一个好答案,但还是找不到一个好答案

我的控制器方法是

        @RequestMapping(value = "/add", method = RequestMethod.GET, consumes = { MediaType.APPLICATION_JSON_VALUE }, produces = { MediaType.APPLICATION_JSON_VALUE })
public @ResponseBody String addInventory(@RequestBody InventoryAddParam inventoryAddParam) {

    log.info("addInventory");
    ServiceRequest<InventoryAddParam> serviceRequest =  convertAddParamtoServiceRequest(inventoryAddParam);
    validate(inventoryAddParam);
    inventoryService.addInventory(serviceRequest);
    return "Inventory Added Succesfully";
}                             
我正在创建addParam对象以作为ajax调用发送。 它是在功能上创造的

function populateTestObject(){
var addParam = new InventoryAddParam();
addParam.inventoryId = "INV001";
addParam.name = "ECG MACHINE";
addParam.price = "1000";
addParam.hospital = "Colombo";
addParam.userNote = "User Note";
return addParam;}      
我在这里做错什么了吗

有关错误的其他详细信息

Remote Address:127.0.0.1:8080
Request URL:http://localhost:8080/GradleSpringMVC/inventory/add
Request Method:POST
Status Code:500 Internal Server Error
标题

Connection:close
Content-Language:en
Content-Length:4939
Content-Type:text/html;charset=utf-8
Date:Wed, 21 Jan 2015 03:55:19 GMT
Server:Apache-Coyote/1.1

您的spring方法使用application/json,错误消息表示您发送的不是有效的json

根据这句话,我认为您的问题是一个
$.extend(addParam)
,当设置为时,它不会返回任何要字符串化的JSON对象(并且不会向服务器发送任何内容)。可能的解决方案是删除extend函数,或者添加另一个参数,在这种情况下将返回一个有效的JSON对象,例如

function sendData() {
var addParam = createAddParam();
$.ajax({
    url : "/GradleSpringMVC/inventory/add",
    type : 'GET',
    dataType : 'json',
    data : JSON.stringify(addParam),
    contentType : 'application/json',
    mimeType : 'application/json'
}).done(function(data) {
    // temGrid.addJSONData(data);
}).fail(function(error) {
    // parseToPageAlerts(error.responseText);
}).always(function() {
    // hideLoading()
});} 

找到了答案。刚刚将jackson的版本更改为
1.9.12

'org.codehaus.jackson:jackson-mapper-asl:1.9.12'

使用更改和新异常更新。
'org.codehaus.jackson:jackson-mapper-asl:1.9.12'