Je reçois une exception de conversion lors de la tentative de création d'un nouvel enregistrement via un POST à l'aide du JSONStore d'Extjs. L'exception se produit lorsqu'une chaîne vide est transmise au serveur et que le serveur tente de la convertir en un nombre entier. Le champ valueField de comboBox est défini sur un champ défini par int. Les champs de datastore sont les suivantes:
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' }
],
la définition combobox est:
{
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'
},
Le JSONStore utilisé pour envoyer le POST est, assez curieusement, l'envoi de la valeur de la combobox comme une chaîne vide, même bien que j'ai configuré le JSONWriter de ne pas envoyer les champs inchangés:
writer: new Ext.data.JsonWriter({
encode: false,
writeAllFields:false
}),
et la valeur POST envoyée au serveur: ....,"secondaryIncidentTypeId":"",...
< - remarquez le vide chaîne après les deux points.
Voici le secondaryIncidentTypeArrayStore:
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: []
})
Je suis sur le point d'écrire un chèque manuel pour une chaîne vide et le mettre à null si la chaîne est vide. Cela semble assez kludgy. Quelle est la bonne façon d'envoyer soit rien de retour ou une valeur nulle au serveur sur le formulaire de soumission?
Merci!
J'ai essayé de supprimer la déclaration de type pour les champs de valeur utilisés dans les combos, mais cela n'a eu aucun effet. Créer un type personnalisé est une possibilité, je suis juste surpris que cela ne soit pas déjà géré par le framework. Merci pour votre contribution! –
Edité pour montrer ce que je voulais dire - vous l'avez fait et il a encore converti 'null' en' 0'? – wombleton