如何使用AngularJS的$resource和spring rest控制器获取布尔值
作者:互联网
尝试使用angular js的$resource服务从spring restcontroller发送获取布尔值,但是在$resource.get的响应中什么也没有得到.我是否需要在客户端或服务器端添加任何其他内容来获取布尔资源.下面是我的REST控制器和$resource的代码
休息控制器-
@RequestMapping(value="validate/company/{companyName}",method=RequestMethod.GET,produces={"application/json"})
public Boolean validateCouponCode(@PathVariable("companyName") String companyName){
return companyService.exists(companyName, Column.SITE_NAME);
}
$Angular js的资源-
function validateCompanyFn(companyName)
return $resource("admin/rest/company/validate/company/:companyName")
.get({companyName:companyName}).$promise
}
我做错了什么?
请提出建议,如果还有另一种使用$resource获取布尔响应的方式,并且在服务器端不使用任何额外的对象
解决方法:
$resource不返回布尔值
$resource.get方法仅返回对象引用,而不返回布尔值.
重要的是要意识到调用$resource对象方法会立即返回空引用(对象或数组取决于isArray).从服务器返回数据后,将使用实际数据填充现有引用.
在后台,$resource服务使用angular.copy
填充对象.
angular.copy
Creates a deep copy of source, which should be an object or an array.
- If a destination is provided, all of its elements (for arrays) or properties (for objects) are deleted and then all elements/properties from the source are copied to it.
07001
由于布尔值没有元素/属性,因此不会复制任何内容.
要返回布尔值,请使用$http service:
//USE $http service
function getSubCategoryIdNameFn(catId){
var url = "admin/rest/subcategory-id-name/" + catId;
return $http.get(url).then(function(response) {
return response.data;
});
};
无需使用$q.defer做出承诺,因为$promise已经是一个承诺.只需返回$promise
//SIMPLIFY
function getSubCategoryIdNameFn(catId){
//var deferred = $q.defer();
//vvvv RETURN the $promise
return $resource("admin/rest/subcategory-id-name/:catId",{catId:"@catId"})
.query({catId:catId})
.$promise
//.then(function(response){
// deferred.resolve(response);
//},function(error){
// deferred.reject(error);
//});
//return deferred.promise;
}
标签:ngresource,angularjs,rest,angular-resource,spring 来源: https://codeday.me/bug/20191026/1934085.html