java - 如何将 JSON 数组从 AngularJS Controller 传递到 Spring Controller ?

标签 java angularjs json spring-mvc

我正在 Spring 4 中使用 AngularJS 和 Hibernate 5 制作 SPA。

将 JSON 数组从 AngularJS Controller 传递到 Spring Controller 时遇到错误。

所有字段值都成功传入 Angular JSON 数组,但未传入 Spring Controller 。

Error: Could not read JSON: ; nested exception is com.google.gson.JsonSyntaxException:

我的项目结构如下。

Spring_Hibernate_MVC =src -com->karmesh->mvcApp->controller->register->RegisterController.java =WebContent -js->app->RegisterController.js -Views->Register.html

注册,html

<div id="DivRegisterMain" ng-controller="RegisterController">   
    <form name="myForm" novalidate>

:::://Form fields here.
        <input type="submit" value="SubmitTest" ng-click="submit()" ><br>
    </form>

</div>

app.js

var routeApp=angular.module("RouteApp",['ngRoute']);

RegisterController.js

routeApp.controller("RegisterController", function($scope, $http) {

    $scope.regJson = {
        "is" : 1,   
        "fname" : "",
        "lname" : "",
        "gender" : "",
        "dob" : "",
        "email" : "",
        "contact" : "",
        "yop" : "",
        "degree" : "",
        "branch" : "",
        "perc" : "",
        "state" : "",
        "city" : ""

    };

$scope.studentList = [];

$scope.submit = function() {

        var req = {
                 method: 'POST',                 
                 url: 'http://localhost:8050/Spring_Hibernate_MVC/registerStudent.do',              
                 data: $scope.studentList,

        };

        $http(req).
        then(function(response){
            console.log(response); // prints true or false
            if (response)
              console.log("in success");
            else 
               console.log("in fail");
            $scope.studentList=[];
        }, function(response){
            console.log(response.status);
            console.log("in error");

        });


    };

RegisterController.java

@EnableWebMvc
@RestController
@RequestMapping("/")
public class RegisterController {

    @Autowired
    private RegisterService registerService;

    public RegisterController() {
        System.out.println(this.getClass().getSimpleName() + "created..");
    }


    @ResponseBody
    @RequestMapping(value="/registerStudent.do", method = RequestMethod.POST)   
    public boolean registerStudent(@RequestBody List<RegisterDTO> stdList) {    
        System.out.println("inside controller..");

        if (stdList != null) {  
        System.out.println("success...");
          }
          return registerService.isStudentExist(stdList);

    }
}

最佳答案

使用 JSON 序列化/反序列化

您的请求应该是

            var req = {
                 method: 'POST',    url:'http://localhost:8050/Spring_Hibernate_MVC/registerStudent.do',              
                 data: JSON.stringify($scope.studentList),
           };

你的 Spring Controller

    @ResponseBody
    @RequestMapping(value="/registerStudent.do", method = RequestMethod.POST)   
    public boolean registerStudent(@RequestBody string data) { 
        List<RegisterDTO> stdList = JsonConvert.DeserializeObject<RegisterDTO>(data); // find java jsondeserializer
        System.out.println("inside controller..");

        if (stdList != null) {  
            System.out.println("success...");
         }
          return registerService.isStudentExist(stdList);

    }  

关于java - 如何将 JSON 数组从 AngularJS Controller 传递到 Spring Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40397202/

相关文章:

javascript - Font-awesome 无法与推送到 Heroku 的 yeoman 生成器一起使用

javascript - 您如何处理带有请求 promise 的 cookie?

java - 更改现有应用程序的 admob id

java - 为什么使用 j_username 和 SPRING_SECURITY_LAST_USERNAME 变量?

java - java中的反射

java - 使用乐观锁定创建新的数据存储实体 (Google App Engine Java/JPA)

java - 在 Spring WebFlow 中转发请求

javascript - Angularjs 函数调用顺序

python - 如何在 python 文件中包含文本

php - 如何向每个 JSON 对象添加数据 PHP