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配置与从服务器返回的数据的实际格式相匹配。
我不知道如何匹配从服务器返回的数据的实际格式。
实际上,我需要Object Page的所有信息,包括User的数组。
页面包含pageNo,currentPage,totallSize,User等。
答案 0 :(得分:0)
哦,我刚才犯了一个错误。这太容易了。
app.factory('baseRequest', ["$resource", function ($resource) {
return $resource("/apis/getPageData.req/:id", {id: '@id'}, {
query: {method: 'get', isArray: false}
});
}]);