簡體   English   中英

將數據從angularjs控制器傳遞到spring控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM