2016-03-29 67 views
0

使用角度js將參數發送到彈簧應用程序。無法在彈簧應用程序中讀取POST參數

在角側

$http.post('dashboard/processSearch',{processRequestName:'TestName',displayName:'Test'}) 
    .then(function(response) { 
     console.log(response.data); 
    }); 

在控制器側在彈簧

@RequestMapping(value = "/processSearch", method = RequestMethod.POST) 
@ResponseBody 
public String searchAll(@RequestParam String processRequestName, @RequestParam String displayName) { 

    return processRequestName+"####"+displayName; 
} 

我m到處完整的網頁與錯誤消息Ajax響應

錯誤 應用在執行時遇到錯誤操作。 查看下面的錯誤細節。 錯誤參考:1459234251503-5

label.error.missingservletrequestparameterexception 
+0

使用瀏覽器的開發工具來確定它是面向客戶端還是服務器端的問題。 – kryger

+0

其服務器端問題。能夠在螢火蟲中看到後參數 –

+0

在這種情況下,您需要包含確切的堆棧跟蹤,這將詳細解釋問題出在哪裏以及在哪裏。 – kryger

回答

2

指定把params參數

打破你的HTTP調用不同下來。

$http({ 
    url: dashboard/processSearch, 
    method: "POST", 
    params: {processRequestName: 'TestName', displayName:'Test'} 
}); 

這是通過params的正確方法。

但是你可能需要以類似的方式傳遞消息頭PARAMS

headers: { 
    'Content-Type': undefined 
} 

使用工廠

您還應該在返回結果的工廠方法的HTTP請求。然後,您可以將該工廠添加到您需要的任何控制器。這是您執行控制器的.then部分的地方。

你的廠應該是這個樣子

angular.module('yourService', []).factory('YourFactory', [ '$http', function($http){ 
    return{ 
    getStuff: function(){ 
     return // your http request 
    } 
    }; 
}]); 

然後,您可以打電話給你的工廠在你的控制器這樣

angular.module('yourCtrlMod', ['yourService']).controller('yourCtrl', [ '$scope','yourFactory', function($scope, yourFactory){ 

    yourFactory.getStuff().then(function(res){ 
    $scope.yourScope= res.data; 
    }); 

}]); 

請注意,這是一個讓並非一個職位,你的情況你將不得不發佈數據併發送參數。到工廠並填寫參數或標題。

+0

感謝您糾正我的角度。春天呢?有沒有需要改變 –

+0

沒有問題尼廷,我不熟悉春天,但我希望這個答案推動你在正確的方向,祝你好運。 –

相關問題