All
Я получаю исключение приведения при попытке создать новую запись через POST, используя Extjs 'JSONStore. Исключение происходит, когда на сервер передается пустая строка, и сервер пытается преобразовать ее в целое число. Значение valueField comboBox устанавливается в поле, определенное 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'
},
JSONStore, используемый для отправки POST, как ни странно, отправляет значение поля со списком в виде пустой строки, хотя я настроил JSONWriter так, чтобы он не отправлял неизмененные поля:
writer: new Ext.data.JsonWriter({
encode: false,
writeAllFields:false
}),
И значение POST, отправленное на сервер: ....,"secondaryIncidentTypeId":"",...
<- обратите внимание на пустую строку после двоеточия. </p>
Вот вторичныйIncidentTypeArrayStore:
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: []
})
Я на грани написания ручной проверки на наличие пустой строки и установки ее на ноль, если строка пустая. Это выглядит довольно глупо. Как правильно отправить обратно либо пустое значение, либо пустое значение на сервер при отправке формы?
Спасибо!