В нашем приложении мы подкласс Ext.data.DataProxy , как это:
var MyProxy = function(fn) {
this.fn = fn;
};
Ext.extend( MyProxy, Ext.data.DataProxy, {
load: function(params,reader,callback,scope,arg) {
this.fn(params,function(data) {
callback.call(scope,reader.readRecords(data),arg,true);
});
},
update: function() {}
});
Вы используете его в магазине так:
var store = new Ext.data.Store({
reader: myReader, proxy: new MyProxy(function(params,callback) {
// params are used for paging and searching, if you need it
callback(SomeService.getData(params));
})
// ...
});
У нашего фактического прокси-класса есть дополнительный код отладки и обработки ошибок, который я упустил для простоты. Вам также может понадобиться немного манипулировать вашими данными, чтобы Ext.data.JsonReader мог справиться с этим, но это основная идея. SomeService - это имя JavaScript, которое вы указали для любого bean-компонента, представленного в dwr.xml (или в вашей конфигурации Spring).