将对象从angularjs控制器传递给rest api

时间:2015-11-06 06:52:34

标签: angularjs spring rest

嗨,我正在使用Angularjs创建一个应用程序,带有spring的REST服务。我想将对象从angulajs url传递到休息服务,但它确实有效,请任何人帮助我,我的jsp页面代码如下所示,

<html ng-app="studentApp">
<body>
<div ng-controller="studentController">
<table border = "0">
<tr>
           <td>Enter first name:</td>
           <td><input type = "text" ng-model = "student.firstName"></td>
        </tr>

        <tr>
           <td>Enter last name: </td>
           <td>
              <input type = "text" ng-model = "student.lastName">
           </td>
        </tr>
</table>
</div>
</body>
</html>

和我的angularjs代码是,

var studentApp = angular.module("studentApp", []);

  studentApp.config(['$httpProvider', function ($httpProvider) {
  $httpProvider.defaults.useXDomain = true;
  delete $httpProvider.defaults.headers.common['X-Requested-With'];
   }]);

 studentApp.controller("studentController", [ '$scope', '$http',
 function($scope, $http) {

$scope.toggle=true;
var urlBase="http://localhost:8080/studentweb/";        

    $scope.insertStudent = function inserStudent() {

        $http({
            method : 'POST',
            url : urlBase+'/Student/insert',
            data:  {student:data}
        }).success(function(data, status, headers, config) {
            $scope.student=data;
            $scope.toggle='!toggle';
        }).error(function(data, status, headers, config) {
            alert( "failure1");
        });

我的休息服务是,

 public class StudentController
{
 @RequestMapping(value="/Student/insert",method = RequestMethod.POST ,params= {"student"})
 public String insertStudent(@RequestParam("student") StudentVO student) throws ParseException {    

     student.setFirstName(student.getFristName());  
     student.setLastName(student.getLstName());     
     studentcontrol.addStudent(student);    

     return "";

 }  

}
} ])

1 个答案:

答案 0 :(得分:1)

问题是你&#34; usrlBase&#34;变量有&#34;学生/&#34;额外的,因为你已经打电话给你的学生控制器     url:urlBase +&#39; / Student / insert&#39; 因此,完整的URL变得像     http://localhost:8080/student//Student/insert而它应该是这样的:     http://localhost:8080/Student/insertStudent

<强>更新 下面是一个非常好的工作示例,其中包含一些示例restful服务,您的代码中缺少一些括号。如果需要,请查看以下代码并回复我。

<html ng-app="studentApp">
<div ng-controller="studentController">
    <table border="0">
        <tr>
            <td>Enter first name:</td>
            <td><input type="text" ng-model="student.FirstName"></td>
        </tr>
        <tr>
            <td>Enter last name: </td>
            <td>
                <input type="text" ng-model="student.LastName">
            </td>
        </tr>
    </table>
</div>

脚本:        var studentApp = angular.module(&#34; studentApp&#34;,[]);

    studentApp.config(['$httpProvider', function ($httpProvider) {
        $httpProvider.defaults.useXDomain = true;
        delete $httpProvider.defaults.headers.common['X-Requested-With'];
    }]);

    studentApp.controller("studentController", ['$scope', '$http',
    function ($scope, $http) {

        $scope.toggle = true;
        //var urlBase = "http://localhost:8080/student/";

       // $scope.insertStudent = function () {
            debugger;
            $http({
                method: 'GET',
                url: 'http://services.odata.org/V4/Northwind/Northwind.svc/Employees(1)?$format=json',
                // data: { student: data }

            }).success(function (data, status, headers, config) {
                debugger;
                $scope.student = data;
                $scope.toggle = '!toggle';
            }).error(function (data, status, headers, config) {
                debugger;
                alert("failure1");
            });
        //  }
    }]);