Intentando enviar un valor booleano desde spring restcontroller usando el servicio $resource de angular js, pero no obtengo nada en respuesta a $resource.get. ¿Hay algo adicional que deba agregar en mi lado del cliente o en el lado del servidor para obtener un recurso booleano? A continuación se muestra mi código para el controlador de descanso y el controlador de descanso $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); }
$ recurso de Angular js -
function validateCompanyFn(companyName) return $resource("admin/rest/company/validate/company/:companyName") .get({companyName:companyName}).$promise }
que estoy haciendo mal? sugiera, si hay otra forma de obtener una respuesta booleana usando $resource, y sin usar ningún objeto adicional en el lado del servidor
El método $resource.get
solo devuelve referencias a objetos , no valores booleanos.
Es importante darse cuenta de que invocar un método de objeto $resource
devuelve inmediatamente una referencia vacía (objeto o matriz dependiendo de isArray
). Una vez que el servidor devuelve los datos, la referencia existente se rellena con los datos reales.
Bajo el capó, el servicio $resource
usa angular.copy
para completar el objeto.
copia angular
Crea una copia profunda de la fuente, que debe ser un objeto o una matriz.
- Si se proporciona un destino, todos sus elementos (para arreglos) o propiedades (para objetos) se eliminan y luego todos los elementos/propiedades del origen se copian en él.
Dado que un booleano no tiene elementos/propiedades, no se copia nada.
Para devolver un booleano, use el servicio $http :
//USE $http service function getSubCategoryIdNameFn(catId){ var url = "admin/rest/subcategory-id-name/" + catId; return $http.get(url).then(function(response) { return response.data; }); };
No hay necesidad de fabricar una promesa con $q.defer
ya que $promise
ya es una promesa. Simplemente devuelva la $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; }