2017-08-10 77 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代碼發送列表作爲請求體的一部分(而不是將它添加到路徑)。