数据从angularJs传递到SpringMVC控制器的“”(双引号)内

时间:2018-09-27 13:01:03

标签: java angularjs spring spring-mvc angularjs-scope

我正在将数据从controller.js传递到service.js到SpringController.java

但是当我将$ scope.credentials.uname数据传递给Java Controller时,发生了奇怪的事情。

传递的数据用双引号引起来。当我用Java打印值时 它被打印为“ USER”而不是USER。

也由于这个原因,我无法将用户名保存在数据库中。

spring.datasource.hikari.leakDetectionThreshold=2000
logging.level.com.zaxxer.hikari=DEBUG
  

此处日志已在Chrome控制台上正确打印

     

用户名SYS_USER->不带双引号

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

service.js

            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;
                            }
                    }
                })


        };

Java控制器方法

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;
        }

控制台上的输出为

内部checkUserType为“ SYS_USER”。

我应该如何传递数据,以便避免将这些“”(双引号)传递给Java Controller

1 个答案:

答案 0 :(得分:0)

从您的service.js中删除JSON.stringify(userName)这就是在您的请求周围添加双引号的过程。

您的data应该只是data: userName。当它发送到您的控制器时,它将被正确转换为json以供您的控制器消化。

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