2011-12-23 5 views
0

Je souhaite utiliser la liaison de données Play avec extjs. J'ai créé un datastore avec ExtJS comme celui-ci:ExtJS et jouer! Framework

Ext.define('Account', { 
    extend : 'Ext.data.Model', 
    fields : [{ 
     name : 'description', type: 'string' 
    }, { 
     name : 'accountNumber', type: 'string' 
    }] 
}); 

store = Ext.create('Ext.data.Store', { 
    model: 'Account', 
    proxy: { 
      type: 'ajax', 
      autoSave: false, 
      api: { 
       read: 'account/research', 
       create: 'account/new', 
       update: 'account/update', 
       destroy: 'account/delete' 
      }, 
      reader: { 
       type: 'json' 
      }, 
      writer: { 
       type: 'json', 
       writeAllFields: true, 
       encode: false 
      } 
    } 
}); 

si je fais ceci:

var compte = Ext.create('Account', { 
    description: 'test' 
}); 
store.create(0, compte); 

mais dans mon contrôleur:

public static void new(Account account) { 
    account.save(); 
    renderJSON("{success: true}"); 
} 

tous les champs sont nuls. Je pense qu'il est parce que le champ doit avoir un préfixe comme account.description et account.accountnumber dans ma demande POST

grâce

Répondre

0

Désolé, je ne suis pas familier avec le jeu mais dans Grails (qui sont très similaires), vous devez faire un peu de liaison de données avant d'appeler save() sur l'objet Domain. Comme cette

Account account = new Accouunt(params) 

ou

Account account = new Account() 
account.properties = params 

EDIT: couru à travers quelques documents de jeu et je pense que vous le faites correctement sur le côté serveur. Du côté client, vous pouvez essayer d'utiliser la configuration "nameProperty". Vous devrez peut-être définir une propriété qui correspond aux noms Play attendus et l'utiliser pour nameProperty.