如何使用角度js将发布请求数据发送到弹簧控制器

时间:2017-05-10 03:17:07

标签: angularjs spring-mvc spring-boot spring-restcontroller

这是我的angularjs代码

$http({
                method : "POST",
                url : '/jobseeker',
                data : {
                    "email" : $scope.userdata.uemail,
                    "firstname" : $scope.userdata.fname,
                    "lastname" : $scope.userdata.lname,
                    "password" : $scope.userdata.upassword
                }
            }).success(function(data) {
                console.log(data);
                //state.go(to verification page for job seeker
            })

这是我的休息控制器映射

@RequestMapping(value = "/jobseeker", method = RequestMethod.POST)
    public ResponseEntity signUp(@RequestParam("email") String email, 
                                 @RequestParam("firstname") String firstname,
                                 @RequestParam("lastname") String lastname,
                                 @RequestParam("password") String password) { ....}

我收到400错误请求错误,指出缺少参数电子邮件

我也试过在我的代码中添加以下标题仍然会出现同样的错误

headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                }

2 个答案:

答案 0 :(得分:0)

我不确定你是否解决了这个问题,但我试图发布一个标准方法来从AngularJS发布POST,但我确信没有其他方法可以做到这一点。

在AngularJS中,一个将POST调用保存到Controller的函数。

$scope.httpFunction = function() {
    var data = new FormData();
    data.append('email', $scope.userdata.uemail);
    data.append('firstname', $scope.userdata.fname);
    // Append as many parameters as needed
    $http.post('jobseeker', data, {
        withCredentials : false,
        transformRequest : angular.identity,
        headers : {
                'Content-Type' : undefined
        }
    }).then(function(response){
        // ANything you wanted to do with response
    })
}

始终确保参数数量匹配,并且Angular和Controller

中的参数名称相同

答案 1 :(得分:0)

更好地使用模型并将其保存在 @RequestBody 中。

例如:

class Model {
     public Model(){}

     String email; 
     String firstname;
     String lastname;
     String password;

     // getters/setters and constructor with parameters
}

然后在控制器中...

signUp(@RequestBody Model model)...

祝你好运