2016-04-22 79 views
0

js文件的响应:Angularjs:ngResource无法摆脱SpringData的回报

var app = angular.module('MyApp', ['ngResource']); 


app.factory('baseRequest', ["$resource", function ($resource) { 

    return $resource("/apis/getPageData.req/:id") 

}]); 


app.controller("MyCtrl", ["$scope", "baseRequest", function ($scope, baseRequest) { 

    var self = this; 

    self.users = []; 


    self.fetchAllUsers = function() { 

     self.users = baseRequest.query(); 

     console.log(self.users); 
    }; 

    self.fetchAllUsers(); 

}]); 

用SpringMVC控制器文件:

@RequestMapping("/apis") 
@Controller 
public class UserController { 

    @Autowired 
    private UserDao userDao; 


    @ResponseBody 
    @RequestMapping(value = "/getPageData", method = RequestMethod.GET) 
    public Page<User> getDatas(@RequestParam(value = "pageNo",required = false,defaultValue = "1" 
    ) String No) { 

     int pageNo = Integer.parseInt(No); 

     if (pageNo < 0) { 

      pageNo = 1; 
     } 

     return userDao.getPageData(pageNo); 
    } 


    @ResponseBody 
    @RequestMapping(value = "/getAll", method = RequestMethod.GET) 
    public List<User> getAll() { 

     return userDao.getAll(); 

    } 
} 

当我请求方法GETALL(),一切顺利。但是,当我请求getDatas()时,它出错了,ngResource无法获得响应,它显示错误如下:

当$ resource服务期望可以反序列化的响应为一个数组,但接收一个对象,反之亦然。默认情况下,除了需要数组的查询之外,所有资源操作都需要对象。

要解决此错误,请确保您的$资源配置与从服务器返回的数据的实际格式相匹配。

error info in console log

我不知道如何来满足数据的实际格式从服务器返回。

其实我需要Object Page的所有信息,包括User的数组。

页面包括pageNo,currentPage,totallSize,User等。

回答

0

哦,我只是犯了一个错误。这很容易。

app.factory('baseRequest', ["$resource", function ($resource) { 

    return $resource("/apis/getPageData.req/:id", {id: '@id'}, { 

     query: {method: 'get', isArray: false} 
    }); 

}]);