2009-06-03 5 views
8

Est-ce que quelqu'un a construit une application de grails utilisant extjs comme frontend? Y a-t-il des pièges ou des pièges que vous aimeriez partager?Expérience d'utilisation d'extjs avec des grails?

On dirait que le format JSON produit par Grails est très différent de ce qu'expose exts, mais est-ce juste une question de personnaliser le JSON du côté grails?

Répondre

13

J'utilise beaucoup la combinaison Grails + ExtJS et c'est très facile à implémenter. La sortie JSON pour les grilles peut être facilement réalisé en faisant quelque chose comme ceci dans vos contrôleurs:

def list = { 
    def books = Book.list(params)  
    render([ items: books, totalCount: Book.count() ] as JSON) 
} 

cela produira « Ext compatible » JSON comme:

{"items":[{"class":"Book","id":1,"title:"The Definitive Guide to Grails","author":"Graeme Rocher",... 

ceci est un exemple sur la façon dont vous doit initialiser le JsonStore.

var store = new Ext.data.JsonStore({ 
    url: '${createLink(action: 'list')}', 
    root: 'items', 
    totalProperty: 'totalCount', 
    fields: [ 'id','title','author','isdn', 'dateCreated' ], 
    paramNames: { start : "offset", limit :"max", sort : "sort", dir : "order" } 
}); 

Lorsque vous traitez avec des valeurs de date, il est la meilleure pratique de l'OMI pour activer le format de date Javascript pour le convertisseur JSON (c.-à-valeurs de date seront rendre ed en tant que new Date(123123123) au lieu du format par défaut "2009-04-16T00: 00: 00Z"), de sorte que vous n'avez pas à vous soucier du format de la date ou du fuseau horaire. Vous pouvez le faire en configurant dans votre Grails-app/conf/Config.groovy:

grails.converters.json.date = 'javascript' 

J'ai également mis en place la fonctionnalité côté serveur pour le plug-in de filtre à grille, diverses combinaisons de mises en œuvre de zone de liste déroulante (avec l'auto-complétion à distance), les arbres, les formulaires etc. Si vous voulez voir plus de code d'exemple pour cela, faites le moi savoir.

ExtJS 3.0 (actuellement RC) s'intègre encore mieux avec Grails, car les DataStores offrent la possibilité de renvoyer les données au backend pour qu'elles soient persistantes. L'approche Ext.Direct offre de nouvelles possibilités aussi bien :-)

+0

Ceci est une super information. Merci beaucoup! –

Questions connexes