Angularjs:ngResource无法从SpringData的返回获得响应

时间:2016-04-22 16:49:22

标签: angularjs spring-mvc

js file:

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服务期望响应可以作为数组反序列化但接收对象时,会发生此错误,反之亦然。默认情况下,所有资源操作都需要对象,但需要数组的查询除外。

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

error info in console log

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

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

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

1 个答案:

答案 0 :(得分:0)

哦,我刚才犯了一个错误。这太容易了。

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

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

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

}]);