Combobox 组合框:当它';s的valueField是数字字段。如何将null传递给服务器?

Combobox 组合框:当它';s的valueField是数字字段。如何将null传递给服务器?,combobox,extjs,jsonstore,Combobox,Extjs,Jsonstore,全部, 当我试图使用Extjs的JSONStore通过POST创建新记录时,我遇到了一个强制转换异常。当一个空字符串被传递给服务器并且服务器试图将其转换为整数时,会发生异常。组合框的valueField设置为int定义的字段。数据存储字段如下所示: fields: [ { name: 'id', type: 'int' }, { name: 'displayOrder', mapping: 'displayOrder', type: 'int'

全部,

当我试图使用Extjs的JSONStore通过POST创建新记录时,我遇到了一个强制转换异常。当一个空字符串被传递给服务器并且服务器试图将其转换为整数时,会发生异常。组合框的valueField设置为int定义的字段。数据存储字段如下所示:

  fields: [
            { name: 'id', type: 'int' },
            { name: 'displayOrder', mapping: 'displayOrder', type: 'int' },
            { name: 'displayName', mapping: 'displayName', type: 'string' },
            { name: 'enabled', mapping: 'enabled', type: 'boolean' },
            { name: 'letterCode', mapping: 'letterCode', type: 'string' }
        ],
组合框定义为:

 {
                xtype: 'combo',
                id:"secondaryIncidentCombo",
                hiddenName: 'secondaryIncidentTypeId',
                forceSelection: true,
                width:"200",
                selectOnFocus: true,
                emptyText: 'Secondary Incident',
                editable: false,
                mode: 'local',
                displayField:   'displayName',
                valueField:     'id',
                store: this.secondaryIncidentTypeArrayStore,
                triggerAction: 'all'
            },
奇怪的是,用于发送POST的JSONStore将combobox的值作为空字符串发送,尽管我已将JSONWriter配置为不发送未更改的字段:

 writer: new Ext.data.JsonWriter({
            encode: false,   
            writeAllFields:false
        }),

发送到服务器的POST值:
…,“secondaryIncidentTypeId:”,“…
发生的情况是,因为
id
字段的类型是
integer
它将其强制为整数。因此,falsy值将为
0

如果删除类型,它将不会进行任何转换,并且在未定义id时不会添加id

e、 g

如果您必须发送
id=null
以使后端正常工作,那么处理它的一种方法就是添加一个自定义代码

如果这两种方法都没有引起你的兴趣,你也可以用其他方法来解决


编辑:啊哈!请尝试该属性。

发生的情况是,因为
id
字段的类型是
integer
它将其强制为整数。因此,falsy值将为
0

如果删除类型,它将不会进行任何转换,并且在未定义id时不会添加id

e、 g

如果您必须发送
id=null
以使后端正常工作,那么处理它的一种方法就是添加一个自定义代码

如果这两种方法都没有引起你的兴趣,你也可以用其他方法来解决


编辑:啊哈!尝试属性。

我尝试删除组合中使用的值字段的类型声明,但没有效果。创建自定义类型是一种可能性,我只是惊讶于框架还不能处理这个问题。谢谢你的输入!编辑以显示我的意思--您这样做了,它仍然将
null
转换为
0
?我尝试删除组合中使用的值字段的类型声明,但没有效果。创建自定义类型是一种可能性,我只是惊讶于框架还不能处理这个问题。谢谢你的输入!编辑以显示我的意思--您这样做了,但它仍然将
null
转换为
0
    secondaryIncidentTypeArrayStore: new Ext.data.ArrayStore({
    idProperty: 'id',
    fields: [
        { name: 'id', mapping: 'id', type: 'int' },
        { name: 'displayOrder', mapping: 'displayOrder', type: 'int' },
        { name: 'displayName', mapping: 'displayName', type: 'string' },
        { name: 'enabled', mapping: 'enabled', type: 'boolean' },
        { name: 'letterCode', mapping: 'letterCode', type: 'string' }
    ],
    data: []
})
new Ext.data.ArrayStore({
  idProperty: 'id',
  fields: [
    { name: 'id', mapping: 'id' },
    { name: 'displayOrder', mapping: 'displayOrder', type: 'int' },
    { name: 'displayName', mapping: 'displayName', type: 'string' },
    { name: 'enabled', mapping: 'enabled', type: 'boolean' },
    { name: 'letterCode', mapping: 'letterCode', type: 'string' }
  ],
  data: []
})