[英]pass data from angularjs controller to spring controller
我必須將兩個字符串數據從angularjs控制器傳遞到spring控制器。 除了json還有其他方法嗎? 我不知道如何在spring控制器中接受json對象。
controller.js
$scope.cloneRelease = function(release,newReleaseName){
var dataObj = {
oldReleaseName : $scope.release,
newReleaseName : $scope.newReleaseName,
};
console.log('inside clone release'+dataObj);
$http.post('cloneReleaseController/cloneRelease',dataObj).success(function (data) {
});
}
Spring controller
public void cloneRelease(String oldReleaseName ,String newReleaseName, @RequestBody ReleaseDAO releaseDAO){
System.out.println("inside clone controller"+oldReleaseName+" "+newReleaseName);
ArrayList<TaskDAO> tasks;
ArrayList<TaskDAO> task = new ArrayList<TaskDAO>();
if(mongoService.createReleaseService(releaseDAO) != null){
String releaseIdOfNewRelease = releaseDAO.getId();
String releaseNameOfNewRelease = releaseDAO.getName();
tasks = mongoService.fetchTaskForReleaseService(oldReleaseName);
for(TaskDAO fetchSingleTask : tasks){
fetchSingleTask.getRelease().setId(releaseIdOfNewRelease);
fetchSingleTask.getRelease().setName(releaseIdOfNewRelease);
}
mongoService.addTask(tasks, null);
}
}
在$ scope.cloneRelease里面你controller.js你有JSON對象dataObj在客戶端 ,只需把下面的代碼,你可以在服務器端與HttpServletRequest的作為
客戶端 :
$http({method: 'POST', url: 'cloneReleaseController/cloneRelease', params:{str:dataObj}}).
success(function(data, status, headers, config) {
console.log("data.token " + data.token);
}).
error(function(data, status, headers, config) {
console.log("data.token " + data.token);
});
服務器端 :字符串json = request.getParameter(“ str”);
沒有更多的代碼,我無法完全確定發生了什么,但是根據顯示的內容,我注意到兩件事:盡管不是絕對必要的,但是您應該聲明controller方法接受JSON數據:
@RequestMapping(consumes=MediaType.APPLICATION_JSON_VALUE)
同樣,您的java對象需要與傳入的JSON對象匹配,或者被注釋以忽略您不打算發送給控制器的字段。 您正在傳入屬性為oldReleaseName和newReleaseName的JSON對象,但是在Java方面,我無法確定您的ReleaseDao類在做什么。 您可能需要在類上使用@JsonIgnoreProperties(ignoreUnknown = true)對其進行批注,以便它不會因缺少的屬性而感到驚訝。
就控制器中的方法簽名而言,我不確定會調用哪個方法,因為您沒有告訴它字符串參數來自何處,而且它們不是通常會自動注入的對象(例如請求)或模型)。 如果您將簽名縮小到以下位置,那么應該會更好。
public void cloneRelease(@RequestBody ReleaseDAO releaseDAO)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.