Данные передаются в "" (двойные кавычки) из angularJs в SpringMVC Controller - PullRequest
0 голосов
/ 27 сентября 2018

Я передаю данные из controller.js в service.js в SpringController.java

, но когда я передаю данные $ scope.credentials.uname в контроллер Java, происходит странная вещь.

Переданные данные идут в двойных кавычках.Когда я печатаю значение в Java, оно печатается как «ПОЛЬЗОВАТЕЛЬ» вместо ПОЛЬЗОВАТЕЛЬ.

Также из-за этого я не могу сохранить имя пользователя в базе данных.

$scope.submitUsername = function()
        {
            $log.info("username "+$scope.credentials.uname);

Здесь журнал печатается правильно. Chrome console

имя пользователя SYS_USER -> без двойных кавычек

            loginService.fetchUserType(angular.copy($scope.credentials.uname)).then(function(data)
                {
                    if (data.loginType == 'NotValidUsername') 
                    {
                        $log.info("Failure")
                        toaster.pop('information', "Warning", 'Enter Valid UserName');
                    }
                    else
                    {
                        $log.info("Success")
                        if (data.loginType == 'database') 
                            {
                                $scope.isExternalUser = true;
                                $scope.showSubmitButton = false;
                            }
                        else
                            {
                                $scope.isExternalUser = false;
                                $scope.showSubmitButton = false;
                            }
                    }
                })


        };

service.js

fetchUserType : function(userName)
        {

            var promise = $http({
                url : "checkUserType.do",
                method : "POST",
                data : JSON.stringify(userName)
            }).success(function(data, status, header, config, statusText)
            {
            }).error(function(data, status, header, config, statusText)
            {
                if(!status === 901)
                    toaster.pop('error', status, statusText);
            }).then(function(response)
            {
                return response.data;
            })
            return promise;
        }

Метод Java Controller

 @RequestMapping(value = "/checkUserType.do", method = { RequestMethod.GET, RequestMethod.POST })
    @ResponseBody
    public Object checkUserType(@RequestBody String username,HttpServletRequest request)
    {

      log.info(" Inside checkUserType  "+username);
      User user = new User();
      user.setUserName(username);
      String userType =  loginService.checkUserType(user.getUserName());

      user.setLoginType(userType);
      return user;

    }

Вывод на консоль

Внутри checkUserType "SYS_USER".

Как передать данные так, чтобыя могу избежать, чтобы эти "" (двойные кавычки) передавались в Java Controller

1 Ответ

0 голосов
/ 27 сентября 2018

Удалите JSON.stringify(userName) из вашего service.js. Это то, что добавляет двойные кавычки вокруг вашего запроса.

Вместо этого data должно быть data: userName.Когда он отправляется на ваш контроллер, он будет правильно преобразован в json, чтобы ваш контроллер мог его переварить.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

...