如何使用 JavaScript 将对象发送到 Spring 控制器使用 json
How do I send a object using JavaScript to Spring Controller using json
我正在制作简单的 Spring MVC 网络应用程序。在我的应用程序中,我想将一个对象从前端发送到 Spring 控制器方法。但是当我这样做时,我收到了 js 错误
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";
}
inventoryAddParam 是一个仅包含字符串参数的可序列化对象。
我的 JavaScript 发送对象的函数是
function sendDataTest() {
$.ajax({
url : "/GradleSpringMVC/inventory/add",
type : 'GET',
dataType : 'json',
data : JSON.stringify(populateTestObject()),
contentType : 'application/json',
mimeType : 'application/json'
}).done(function(data) {
// temGrid.addJSONData(data);
}).fail(function(error) {
// parseToPageAlerts(error.responseText);
}).always(function() {
// hideLoading()
});}
我正在创建 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)
,当设置为 single argument it will extend a jQuery namespace with the object 时,不会 return 任何 JSON 对象字符串化(并且没有任何内容被发送到服务器)。可能的解决方案是删除 extend 函数,或者添加另一个参数,在这种情况下,有效的 JSON 对象将被 returned,例如
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'
我正在制作简单的 Spring MVC 网络应用程序。在我的应用程序中,我想将一个对象从前端发送到 Spring 控制器方法。但是当我这样做时,我收到了 js 错误
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";
}
inventoryAddParam 是一个仅包含字符串参数的可序列化对象。
我的 JavaScript 发送对象的函数是
function sendDataTest() {
$.ajax({
url : "/GradleSpringMVC/inventory/add",
type : 'GET',
dataType : 'json',
data : JSON.stringify(populateTestObject()),
contentType : 'application/json',
mimeType : 'application/json'
}).done(function(data) {
// temGrid.addJSONData(data);
}).fail(function(error) {
// parseToPageAlerts(error.responseText);
}).always(function() {
// hideLoading()
});}
我正在创建 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)
,当设置为 single argument it will extend a jQuery namespace with the object 时,不会 return 任何 JSON 对象字符串化(并且没有任何内容被发送到服务器)。可能的解决方案是删除 extend 函数,或者添加另一个参数,在这种情况下,有效的 JSON 对象将被 returned,例如
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'