java数据在“”内(双引号)从angularJs传递到SpringMVC控制器
我正在从控制器传递数据。js服务。js到SpringController。爪哇
但当我通过$scope时,奇怪的事情发生了。资格证书将数据解封到Java控制器
传递的数据以双引号形式出现。当我用Java打印值时 它被打印为“用户”而不是“用户”
同样由于这个原因,我无法将用户名保存在数据库中
$scope.submitUsername = function()
{
$log.info("username "+$scope.credentials.uname);
Here log is getting printed properly chrome console
username SYS_USER --> without double quotes
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;
}
}
})
};
服务。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控制器方法
@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;
}
控制台上的输出是
内部检查用户类型“系统用户”
我应该如何传递数据,以避免将这些“”(双引号)传递给Java控制器
# 1 楼答案
从您的服务中删除
JSON.stringify(userName)
。这就是在你的请求周围添加双引号的原因相反,你的
data
应该是data: userName
。当它被发送到您的控制器时,它将被正确地转换为json,以便您的控制器进行消化https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify