ExtJs(6.0.0)rest服务PUT请求
我正试图将一些数据从我的前端ExtJs放入我的后端Java,Spring。它不起作用或者我没有得到正确的线索 我在一个Ext.grid.Panel上,在这里我使用了以下存储,它由this.store.setData myObject.data.items方法很好地填充和显示: 我显示表格中的所有条目。存储不会自动加载条目,而是从外部设置:setValuemyObject。 还有另一个存储用于最初加载数据。然后对接收到的数据进行拆分和转发,以避免出现多个请求 我确实得到了一个很好的可视化表,它的条目可以通过行编辑插件进行编辑 好的,到目前为止,背景是什么 在编辑表的数据时,我运行一些验证,并通过模式对话框收集更多数据,然后通过调用updateRecordobjectId、objectWithUpdateProperties将数据发送到服务器 这是我的问题。我不知道如何调用/发送服务器将读取的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。 还有另一个存储用于最初加载数据。然后对接收到的数据进行拆分和转发,以避免出现多个请求 我确实得到了一个很好的可视化表,它的条
有人能帮我吗?我通常使用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)]);
}