我有一个基于Spring Boot和Angular的应用程序。在那里,我有这个表格:
<form name="create-project">
<div class="input-group">
<input type="text" class="form-control" ng-model="project.name"
placeholder="Project name">
<span class="input-group-btn">
<button class="btn btn-default" type="button"
ng-click="createProject(project)">Create project</button>
</span>
</div>
</form>
createProject
在控制器中定义。[...]
.controller('projects', function($scope, $http) {
$http.get('/resource/').success(function(data) {
$scope.greeting = data;
});
$scope.createProject = function(project) {
console.log("createProject called on the client side, project name: " +
project.name);
$http.post('/createProject', {name: project.name}).success(function(){
console.log("createProject called successfully");
});
}
});
在服务器端,我有以下方法来处理
createProject
请求:@SpringBootApplication
@RestController
public class MyApplication {
[...]
@RequestMapping(value="/createProject", method=RequestMethod.POST)
public String createProject(final String name) {
System.out.println("createProject, server side, name: " + name);
return "";
}
}
当我运行应用程序时,在项目名称字段中输入一些文本,然后按创建项目按钮,发生以下情况:
我在客户端(
createProject called on the client side, project name:
)上看到带有正确项目名称的日志消息。在服务器日志中,我看到
createProject, server side, name: null
。输入的项目名称未传递到服务器,或者不接受。
我该如何解决? e。确保我可以在方法
MyApplication.createProject
中访问输入的项目名称? 最佳答案
您的JavaScript代码对我来说还不错。我认为您需要在@RequestBody
中添加createProject()
。目前,它正在检查URL中的名称值。例如/ createProject?name = John。相反,您正在做的是在请求正文中指定它。这就是为什么名称为null的原因。
@SpringBootApplication
@RestController
public class MyApplication {
[...]
@RequestMapping(value="/createProject", method=RequestMethod.POST)
public String createProject(@RequestBody final String name) {
System.out.println("createProject, server side, name: " + name);
return "";
}
}