Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ExtJs(6.0.0)rest服务PUT请求_Extjs_Extjs6 Classic - Fatal编程技术网

ExtJs(6.0.0)rest服务PUT请求

ExtJs(6.0.0)rest服务PUT请求,extjs,extjs6-classic,Extjs,Extjs6 Classic,我正试图将一些数据从我的前端ExtJs放入我的后端Java,Spring。它不起作用或者我没有得到正确的线索 我在一个Ext.grid.Panel上,在这里我使用了以下存储,它由this.store.setData myObject.data.items方法很好地填充和显示: 我显示表格中的所有条目。存储不会自动加载条目,而是从外部设置:setValuemyObject。 还有另一个存储用于最初加载数据。然后对接收到的数据进行拆分和转发,以避免出现多个请求 我确实得到了一个很好的可视化表,它的条

我正试图将一些数据从我的前端ExtJs放入我的后端Java,Spring。它不起作用或者我没有得到正确的线索

我在一个Ext.grid.Panel上,在这里我使用了以下存储,它由this.store.setData myObject.data.items方法很好地填充和显示:

我显示表格中的所有条目。存储不会自动加载条目,而是从外部设置:setValuemyObject。 还有另一个存储用于最初加载数据。然后对接收到的数据进行拆分和转发,以避免出现多个请求

我确实得到了一个很好的可视化表,它的条目可以通过行编辑插件进行编辑

好的,到目前为止,背景是什么

在编辑表的数据时,我运行一些验证,并通过模式对话框收集更多数据,然后通过调用updateRecordobjectId、objectWithUpdateProperties将数据发送到服务器

这是我的问题。我不知道如何调用/发送服务器将读取的rest/put请求。接收不是问题,发送才是问题

我想我需要触发我的商店或商店的代理。但是怎么做呢? 这并不是说我可以简单地告诉我的对象保存,因为我拥有的数据不仅仅是更改对象的属性


有人能帮我吗?

我通常使用Ext.Ajax来实现这一点,如下所示:

updateRecord: function(objectId, objectWithUpdateProperties) {

    Ext.Ajax.request({
       url: 'YourUrl',
        params: {       
            some_param: 'some_value',
            object_id: objectId,
            object_with_properties_param1: objectWithUpdateProperties.param1
        },
        success: function(response, opts) {     
            //Horay, Do something with the response
        },
        failure: function(response, opts) {
            //Oh nooooo            
        }
    });
}
不需要使用Ajax。 您需要配置proxy.api CRUDC:create、R:read、U:Update。D:在RestProxy上从客户端删除。 此外,存储必须具有autoSync:true

在服务器端,需要为每一个CRUD配置一个@RestController,并使用JSON Java编码器为Jackson或等效参数配置一个@RestController,以获取JSON数据。请考虑,您可以只向服务器发送修改后的字段store.proxy.writer.writeAllFields:false->>>默认值,或者只发送完整记录。writeAllFields:true。 下面是存储的构造函数中的一个示例:

constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
me.callParent([Ext.apply({
                autoLoad: true,
                autoSync: true,
                model: 'Test.model.Country',
                proxy: {
                    type: 'rest',
                    api: {
                        create: 'country/create',
                        read: 'counrtry/list'
                        update: 'counrtry/update',
                        destroy: 'counrtry/destroy'
                    },
                    writer:{
                        writeAllFields : true
                    },
                    reader:{
                        root:'items',
                        totalProperty: 'rowCount'
                    }
                }
            }, cfg)]);
}

额外注意:要从服务器读取并自动加载存储,只需设置store.autoLoad:true,并从服务器端设置相应的@RestController方法。考虑一下store.reader参数。

您到底需要什么?这对我非常有用。谢谢你,法比奥。因为我的URL反映了实体id,所以我称之为URL:“YourUrl/”+objectId,参数被简单地设置为params:ObjectWithUpdateProperties只是一些进一步的信息:我需要一个PUT请求,所以我将方法:'PUT'设置为URL的下一个属性。感谢您的详细解释。对于我的用法,我只需要一个PUT请求,而不是CRUD Api。而且我的模型不是任何类型的。后端将把信息分发到它们所属的位置。它们肯定不属于前端中的单个模型实体。您的解决方案似乎是准确的,并且已经整理好了。我会记住它,因为它展示了一种处理数据的好方法。
constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
me.callParent([Ext.apply({
                autoLoad: true,
                autoSync: true,
                model: 'Test.model.Country',
                proxy: {
                    type: 'rest',
                    api: {
                        create: 'country/create',
                        read: 'counrtry/list'
                        update: 'counrtry/update',
                        destroy: 'counrtry/destroy'
                    },
                    writer:{
                        writeAllFields : true
                    },
                    reader:{
                        root:'items',
                        totalProperty: 'rowCount'
                    }
                }
            }, cfg)]);
}