1


我们有一个资源定义如下:

var services = angular.module('services', ['ngResource']);  
services.factory('Facility', function ($resource) {
var resource = $resource('/facility/:id.json', {id: '@id'}, update);
    resource.restore = function (pathParams, success, error) {
        $resource('/facility/:id/restore.json', {}, update).update(pathParams, {}, success, error);
    };
    return resource;
});

其中update定义为自定义动作,因为Angular默认不支持PUT,如下:

var update = {update: {method: 'PUT'}};

现在调用 Facility.get 触发的 GET url 是http://localhost:9091/facilities/1.json例如,它正常工作。但是我们正在使用 Spring 安全性,并且在会话超时和后续重定向到登录和登录成功后,我们执行 location.reload(),它重新加载编辑页面,但是这个 GET url 失败并出现 JSON 解析错误“没有要映射的内容...输入结束”。我们发现重新定义另一个服务工厂

services.factory('FacilityGet', function ($resource) {
     return $resource('facilities/:id', {}, {});
}

并使用它解决了这个问题。使用更新操作或“{id: '@id'}”参数中的任何一个都会导致问题 - 只有当我们同时排除它们时,相应的资源才会触发正确的 GET 请求。

请注意,从早期资源触发的 GET 仅在登录重定向后的第一次失败,但后来工作正常。任何帮助或指示都会非常有用。

谢谢,
稻田

4

0 回答 0