如何防止extjs模型/代理在创建时保存空的主id
我已经用REST代理定义了我的模型。对于读取(GET)和更新(PUT)来说,它可以正常工作,因为这些操作需要一个主id。当我执行创建操作(POST)时,代理将所有字段(包括空的主id)发送到服务器,这会导致服务器出错。服务器希望创建操作不包括主id。如何指示extjs不发送空的主id值?例如:“{'model_id':'',…}”如何防止extjs模型/代理在创建时保存空的主id,extjs,Extjs,我已经用REST代理定义了我的模型。对于读取(GET)和更新(PUT)来说,它可以正常工作,因为这些操作需要一个主id。当我执行创建操作(POST)时,代理将所有字段(包括空的主id)发送到服务器,这会导致服务器出错。服务器希望创建操作不包括主id。如何指示extjs不发送空的主id值?例如:“{'model_id':'',…}” 我希望它在create中完全不包含primaryid字段。我认为这是一种错误的更改请求结构的方法。在使用REST的情况下,操作创建、更新请求的责任完全在服务器端 如果
我希望它在create中完全不包含primaryid字段。我认为这是一种错误的更改请求结构的方法。在使用REST的情况下,操作创建、更新请求的责任完全在服务器端 如果在启动创建请求时仍要更改参数,可以通过“beforerequest”事件进行更改:
举个例子,我重新定义了硬编码的数据字段,但是,当然,可以在循环中运行所有字段,而无需在代码中写入其名称。那么,您的服务器相当糟糕,不是吗 您可以将其设置为null,但使用
fields:[
{
name:'model_id',
type:'int'
useNull:true
}
]
虽然如果model_id是一个字符串,它仍然是'
您也可以在字段上设置persist=false
,但在更新时它不会保存它
基本上,如果id为空,请告诉您的服务器管理员忽略它我将使用此方法,只需从jsonData:delete options.jsonData['post_id']中删除id属性。将persist设置为false很不方便,因为我需要更新的id
Ext.Ajax.on("beforerequest", function( conn, options, eOpts){
if (options.action=='create')
{
var newData =
{'name': options.jsonData.name, 'email': options.jsonData.email };
options.jsonData = newData;
}
});
fields:[
{
name:'model_id',
type:'int'
useNull:true
}
]