如何在ExtJs中集成Java API

时间:2019-03-19 10:15:44

标签: javascript extjs

我是ExtJ的新手,我正在尝试集成Java API以将记录保存到extJ中,但是会出错。即

  

Ext.form.Basic.updateRecord():需要记录。请找到我的代码详细信息

onSaveClick: function (button) {
       
        var dialog, record, store;
        dialog = button.up('window').down('form');
        dialog.updateRecord();
        record = dialog.getRecord();
        
        if (record === trac.app.getUser()) {
            record.save();
        } else {
            store = Ext.getStore('Routes');
            if (record.phantom) {
                store.add(record);
            }
            store.sync({
                failure: function (batch) {
                    store.rejectChanges();
                    trac.app.showError(batch.exceptions[0].getError().response);
                }
            });
        }
        button.up('window').close();      
    }

2 个答案:

答案 0 :(得分:0)

首先获取记录,然后将其用作dialog.updateRecord的参数:

onSaveClick: function (button) {

    var dialog, record, store;
    dialog = button.up('window').down('form');
    record = dialog.getRecord();
    dialog.updateRecord(record);

    if (record === trac.app.getUser()) {
        record.save();
    } else {
        store = Ext.getStore('Routes');
        if (record.phantom) {
            store.add(record);
        }
        store.sync({
            failure: function (batch) {
                store.rejectChanges();
                trac.app.showError(batch.exceptions[0].getError().response);
            }
        });
    }
    button.up('window').close();      
}

答案 1 :(得分:0)

只需阅读documentation

  

将该格式的值持久存储在beginEdit / endEdit块中传递的Ext.data.Model对象中。如果未指定记录,它将尝试更新(如果存在)提供给loadRecord的记录。

这可能解释了为什么另一个答案没有意义(试图获取记录,该记录很可能从未从商店加载过。很可能甚至没有操作,因为它是同一事物的获取/设置)。该方法的正确应用甚至不是onsave,而是onload。独立于绑定存储,使用Ext.data.Model填充表单。