Javascript Extjs模型加载获取错误“;为“返回的记录id无效”;但仅当从全局控制器触发时

Javascript Extjs模型加载获取错误“;为“返回的记录id无效”;但仅当从全局控制器触发时,javascript,rest,extjs,model,Javascript,Rest,Extjs,Model,在我的Extjs应用程序中,我有一个模型: Ext.define('Registration.model.SessionDetails', { extend: 'Ext.data.Model', fields: [ { name: 'id', mapping: 'recid'}, // showing this field to show that an id field is being specified ... ], prox

在我的Extjs应用程序中,我有一个模型:

Ext.define('Registration.model.SessionDetails', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'id', mapping: 'recid'}, // showing this field to show that an id field is being specified
        ...
    ],
    proxy:{
        type: 'rest',
        url: 'sessions',
        reader: {
            type: 'json',
            rootProperty: 'record'
        }
    }
});
当我通过代理anywhere(我的全局控制器除外)加载此模型中的特定记录时,它会成功加载:

但当我试图从我的全局控制器触发此命令时:

onSessionDetailNavigation: function (sessionsId){
    // where session id is 43149 passed in from my router
    var detailsWindow = Ext.widget('sessiondetails');
    var model = Registration.model.SessionDetails;

    var session = model.load(sessionsId, {
        callback: function (){
            console.log('callback fired');
        }
    });

    ...
进行网络调用并从my API返回成功:

我得到一个错误:

为返回的记录id无效43149@Registration.model.SessionDetails

我不认为在全局控制器范围内运行它会对模型记录加载产生任何影响。我错过了什么

更新 以下是尝试通过ModelManager获取模型的结果:


onSessionDetailNavigation
中尝试

var session = new Registration.model.SessionDetails();
//or
var session = Ext.create('Registration.model.SessionDetails');

session.load(sessionsId, {
    callback: function (){
        console.log('callback fired');
    }
});


我有一个类似的问题,在我将ID显式设置为
int
之后,它不再抛出错误

{
    name : 'id',
    type : 'int',
    mapping : 'recid'
}

在我的例子中,我实现了一个servlet,每次都返回一个对象列表。 但在后台(单击时),ext正在执行一个请求,并将记录id作为参数,以期望收到单个结果。当请求返回一个列表时,ext尝试使用列表的第一条记录来比较id(解释网格中的第一行通常不产生错误消息的事实),并且当在我的网格上选择的id不相等时,返回的第一个id崩溃(返回的id无效)。我的解决方案是测试请求是否包含id参数,在肯定的情况下,servlet只返回具有请求id的记录,而不是varios记录列表。 希望有帮助。
对不起,英语…

所以我两个都试了一下。在每种情况下,它都会更改网络请求。它仍在触发get请求,但不是使用restful
mydomain.com/entity/recordid
语法,而是使用模型名称代替id:
http://registration.ssc.dev/sessions/Registration.model.SessionDetails-1?_dc=1443125707197
。代理肯定仍然是rest
session.getProxy().type
在创建模型类outputs
rest
后在调试器中暂停时,因此我认为加载方法应该像以前一样将id追加到uri的末尾:/I我不确定为什么现在没有。如果使用
var session=Ext.ModelManager.getModel('Registration.model.SessionDetails'),该怎么办;并加载它?我得到了一个“Ext.data.ModelManager#getModel”是不推荐的。`这个错误:/但是它加载了吗?它只是为了获取一个引用;)
{
    name : 'id',
    type : 'int',
    mapping : 'recid'
}