gpt4 book ai didi

javascript - 服务器端未收到 Extjs 5.0 模型 POST 值(工作 Extjs 4.2)

转载 作者:行者123 更新时间:2023-12-03 12:25:08 25 4
gpt4 key购买 nike

我正在将 Extjs 4.2 应用程序升级到 Extjs 5.0。
我可以调出所有只读页面,但当我尝试更新/保存数据时遇到问题。我将非常感谢您的帮助!!

我的模型数据值没有显示在服务器端,我可以使用 console.log(model) 打印模型,它具有所有值,但在服务器端它只具有id 和所有其他参数都显示为 null。

这是模型中的代理:


Ext.define('MyApp.model.User', {
extend: 'Ext.data.Model',
id: 'user',
proxy: {
type: 'rest',
url : '/rest/update/user',
listeners: {
exception: function(proxy, response, operation) {
Ext.Msg.alert('Failed', 'Save the user Failed!');
}
}
},
fields: [
{name: 'id', type: 'int'},
{name: 'userName', type: 'string'},
{name: 'country', type: 'string'}
]
}

Controller :

onUserUpdateAction: function(button, event, action) { 

var model = Ext.create('MyApp.model.User');
model.set('id', "123");
model.set('userName', "john");
model.set('country', "usa");
---
model.commit() / without commit() it does not add the id in URL like /user/123
model.save();
}

这是服务器端代码:

@PUT
@Consumes({ "application/json" })
@Path("/Update/user/{id}")
updateUser(@PathParam("id") final int id, final User record);

实现类中的第一行日志,id在那里,但所有其他值都是null

*** In updateUser() method, id : 123, record: User(id=123, **userName=null, country=null**)

最佳答案

这里的问题是你试图欺骗分机。您使用 id 创建新记录 - 通常 id 由服务器分配。因此,您需要提交它以清除它的phantom(新记录)标志,以便Ext认为它已经是现有记录。但是,提交后,记录没有修改的字段,并且默认情况下,仅将修改的字段发送到服务器。因此,您需要配置一个编写器,如下所示:

Ext.define('MyApp.model.User', {
extend: 'Ext.data.Model',
idProperty: 'id',
fields: [
{name: 'id', type: 'int'},
{name: 'userName', type: 'string'},
{name: 'country', type: 'string'}
],

proxy: {
type: 'rest',
url : 'success.php',
listeners: {
exception: function(proxy, response, operation) {
Ext.Msg.alert('Failed', 'Save the user Failed!');
}
}
,writer:{
type:'json'
,writeAllFields:true
}
}
});

关于javascript - 服务器端未收到 Extjs 5.0 模型 POST 值(工作 Extjs 4.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24248792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com