0

晚上好,伙计们,

当我更新该方法时,它不会保存所有模型项,如“tipoNo”和“pai”。有人知道我能做什么吗?

请求有效载荷

这是请求中发送的信息。

{"parentId":1,"nome":"qwfqwfqw"}

模型:

我的模型中的字段。

fields : [ {
    name : 'id',
    type : 'long'
},{
    name : 'pai',
    type : 'long'
}, {
    name : 'nome',
    type : 'string'
}, {
    name : 'tipoNo',
    type : 'string'
}, {
    name : 'leaf',
    type : 'boolean',
    convert : function(value, record) {
        var no = record.get('tipoNo');
        return (no == "CLIENTE" ? true : false);
    }
} ],

代理

代理服务器上的必要信息。

proxy : {
    type : 'rest',
    url : Webapp.link('node'),
    reader : {
        type : 'json',
        root : 'nodes',
        idProperty : 'id'
    },
    writer : {
        type : 'json',
        writeAllFields : false
    }
}

控制器方法

/**
 * Rename
 * 
 * @param {Ext.grid.plugin.CellEditing} editor
 * @param {Object} e                            
 */
updateList : function (editor, e) {
    var node = e.record;
    node.save({
        success: function(list, operation) {
            console.log("updated");
        },
        failure: function(list, operation) {
            var error = operation.getError(),
                msg = Ext.isObject(error) ? error.status + ' ' + error.statusText : error;

            Ext.MessageBox.show({
                title: 'Notificação',
                msg: msg,
                icon: Ext.Msg.ERROR,
                buttons: Ext.Msg.OK
            });
        }
    });
},
4

2 回答 2

0

看看你的代理配置。您的 JSON 编写器将writeAllFields属性设置为 false。来自Ext.data.writer.Json文档:

True to write all fields from the record to the server.
If set to false it will only send the fields that were modified.

所以任何没有被触及的字段都不会被发送回服务器。如果您希望将所有属性发送到服务器,请将其设置writeAllFields为 true(或将其删除,因为 true 是默认设置)并重试。

于 2012-09-10T17:19:55.787 回答
0

这种情况下的解决方案:

/**
 * Executa a edição
 * 
 * @param {Ext.grid.plugin.CellEditing} editor
 * @param {Object} e                            
 */
updateList : function (editor, e) {
    var node = e.record;
    var me = this;
    var nodeTree = me.getNodeTree();

    var method = (node.data.id !== undefined ? 'PUT' : 'POST');
    var post = {
            id: (node.data.id !== undefined ? null : node.data.id),
            nome: node.data.nome,
            pai: (node.data.parentId == -1 ? null : node.data.pai),
            tipoNo: node.data.tipoNo
    };
    Ext.Ajax.request({
        url: Webapp.link("node"),
        headers: { 'Content-Type': 'application/json' }, 
        jsonData: post,
        method: method,
        success: function(response){
            var text = response.responseText;
            console.log(text);
            nodeTree.refreshView();
        }
    });

},
于 2012-09-11T14:27:10.250 回答