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