2017-08-10 76 views
0

我试图从角度支柱发送JSON数据到春天的控制器,但在控制台中获得404:发送JSON数据到春天控制器

POST http://localhost:8080/app/orderDetails/saveOrder/[object%20Object],[object%20Object] 404(未找到)

JS

var i=0; 
var j = ngCart.getCart().items.length; 
$scope.list=[]; 
for(i;i<j;i++){ 
    $scope.list.push({ 
      'id': ngCart.getCart().items[i]._id, 
      'quantity':ngCart.getCart().items[i]._quantity 
     }); 
    } 
$http.post("/app/orderDetails/saveOrder/"+$scope.list) 

爪哇(春季)

@RequestMapping(value = "/saveOrder/list",headers="Accept=application/json") 

public @ResponseBody Object saveOrder(@PathVariable List list){ 
} 
+1

@ Pratyush Pranjal问题是智慧h JS,因为它没有正确地创建URL \ –

+0

@Pratyush Pranjal,你没有创建一个有效的请求...请参考:https://stackoverflow.com/questions/1255948/post-data-in-json-format –

回答

4

您不能使用List作为PathVariable。让它RequestBody代替和解决您的JS代码发送$scope.list作为一个机构,它不附加到网址:

-$http.post("/app/orderDetails/saveOrder/"+$scope.list) 
+$http.post("/app/orderDetails/saveOrder", $scope.list); 

还要创建一个包装对象与idquantity领域,是这样的:

public class CartItem { 
    private Long id; 
    private Long quantity; 
    //getters and setters 
} 

然后,你就可以使用这个对象参数的List

- public @ResponseBody Object saveOrder(@PathVariable List list){ 
+ public @ResponseBody Object saveOrder(@RequestBody List<CartItem> list){ 
+1

只是一个建议,但我还要补充一点,'@ PathVariable'正在寻找/ for/a/path与正文中的一个对象 – Brian

+0

@Brian是的,如果'POST'和' PUT'操作。它被映射用于所有操作,但有些东西告诉我它仅用于'POST'。 –

3

此时应更换@PathVariable与@request身体和修复您的JS代码发送列表作为请求体的一部分(而不是将它添加到路径)。