【问题标题】:How to get boolean value using $resource of AngularJS and spring rest controller如何使用 AngularJS 的 $resource 和 spring rest 控制器获取布尔值
【发布时间】:2023-03-30 16:03:02
【问题描述】:

尝试使用 angular js 的 $resource 服务从 spring restcontroller 发送 get 布尔值,但没有得到任何响应 $resource.get。我需要在客户端或服务器端添加什么额外的东西来获取布尔资源。下面是我的休息控制器和 $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 的$resources -

function validateCompanyFn(companyName)  
    return $resource("admin/rest/company/validate/company/:companyName")
    .get({companyName:companyName}).$promise
}

我做错了什么? 请建议,如果有另一种使用 $resource 获取布尔响应的方法,并且在服务器端不使用任何额外的对象

【问题讨论】:

  • 当您直接向资源发出请求时(curl、postman 等)。收到回复了吗?
  • 没有必要用$q.defer 制造一个承诺,因为$promise 已经一个承诺。
  • @tah tatsumoto,是的,在 chrome 浏览器上直接点击 url 时得到正确响应

标签: angularjs spring rest angular-resource ngresource


【解决方案1】:

$resource 不返回布尔值

$resource.get 方法只返回对象引用,而不是布尔值。

重要的是要意识到调用$resource 对象方法会立即返回一个空引用(对象或数组取决于isArray)。从服务器返回数据后,现有引用将填充实际数据。

在后台,$resource 服务使用angular.copy 填充对象。

angular.copy

​​>

创建源的深层副本,应该是对象或数组。

  • 如果提供了目标,则会删除其所有元素(对于数组)或属性(对于对象),然后将源中的所有元素/属性复制到它。

— AngularJS angular.copy API Reference

由于布尔值没有元素/属性,因此不会复制任何内容。

要返回布尔值,请使用$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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多