如何防止extjs模型/代理在创建时保存空的主id

如何防止extjs模型/代理在创建时保存空的主id,extjs,Extjs,我已经用REST代理定义了我的模型。对于读取(GET)和更新(PUT)来说,它可以正常工作,因为这些操作需要一个主id。当我执行创建操作(POST)时,代理将所有字段(包括空的主id)发送到服务器,这会导致服务器出错。服务器希望创建操作不包括主id。如何指示extjs不发送空的主id值?例如:“{'model_id':'',…}” 我希望它在create中完全不包含primaryid字段。我认为这是一种错误的更改请求结构的方法。在使用REST的情况下,操作创建、更新请求的责任完全在服务器端 如果

我已经用REST代理定义了我的模型。对于读取(GET)和更新(PUT)来说,它可以正常工作,因为这些操作需要一个主id。当我执行创建操作(POST)时,代理将所有字段(包括空的主id)发送到服务器,这会导致服务器出错。服务器希望创建操作不包括主id。如何指示extjs不发送空的主id值?例如:“{'model_id':'',…}”


我希望它在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
}
]