将数据从angularjs控制器传递给弹簧控制器

时间:2015-09-03 06:39:57

标签: angularjs spring-mvc

我必须将两个字符串数据从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);
        }

    }

2 个答案:

答案 0 :(得分:0)

$ 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);
                        });

服务器端: String json = request.getParameter(&#34; str&#34;);

答案 1 :(得分:0)

如果没有更多代码,我无法完全确定发生了什么,但根据您所展示的内容,我注意到的两件事情是: 虽然不是绝对必要,但您应该声明控制器方法接受JSON数据:

@RequestMapping(consumes=MediaType.APPLICATION_JSON_VALUE)

此外,您的java对象需要匹配传入的JSON对象,或者注释以忽略您不打算发送到控制器的字段。您传入的是具有属性oldReleaseName和newReleaseName的JSON对象,但在java方面,我无法分辨您的ReleaseDao类正在做什么。您可能需要在类上使用@JsonIgnoreProperties(ignoreUnknown = true)对其进行注释,以便它不会因缺少属性而烦恼。

就控制器中的方法签名而言,我不确定是否会调用一个,因为你没有告诉它字符串参数的来源,它们不是通常会被自动注入的对象(喜欢请求或模型)。如果你将签名减少到下面,你应该有更好的运气。

public void cloneRelease(@RequestBody ReleaseDAO releaseDAO)