こんなお店があります。
Ext.define('app.store.System', {
extend : 'Ext.data.Store',
model : 'app.model.System',
autoLoad: true,
autoSync: true,
proxy: {
type: 'rest',
format: 'json',
url: '/application/appinfo',
method : "GET",
reader: {
type: 'json',
root: 'System'
},
writer: {
root: 'System',
allowSingle: false
}
}
});
そして、このメソッドで /application に一致するリクエストを処理するサービス エンドポイントがあります。
@GET
@Path("/{sysinfo}")
public List<SystemInfo> getSystemInfo() {
if(sysinfo == null){
sysinfo = new SystemInfo();
...initialize
}
List<SystemInfo> resultList = new ArrayList<SystemInfo>();
resultList.add(sysinfo);
return resultList;
}
そしてそれはうまくいくように見えました... localhost:port/application/sysinfo.json に到達しようとしたとき、私はこれを得ました:
{ [{"address":"...","feeds":["feed1","feed2"] } ] }
これは正しいようですが、ビューの init メソッドでストアからデータを読み取ろうとすると:
var store = Ext.StoreManager.lookup('System');
var data = [];
store.each(function(record) {
data.push(record.getData());
console.log("record data: ");
console.log(record.getData());
});
console.log(data[0]);
あたかも店が空だったかのように未定義であると言います。デバッガーで試してみたところ、ビューの initcomponent の後に getSystemInfo() が呼び出されたことがわかりましたが、残念ながらその理由や解決方法がわかりません。何か案は?
御時間ありがとうございます。