2009-06-03 25 views
8

Qualcuno ha creato un'app grails usando extjs come frontend? Ci sono insidie ​​o trucchi che ti piacerebbe condividere?Esperienza nell'uso di extjs con grails?

Sembra che l'output in formato JSON di Grails sia completamente diverso da quello che si aspetta extjs, ma si tratta solo di personalizzare il JSON sul lato Grails?

risposta

13

Sto usando la combinazione Grails + ExtJS molto ed è abbastanza facile da implementare. L'uscita JSON per le reti può essere facilmente raggiunto facendo qualcosa di simile nel vostro controller:

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

questo produrrà "Ext-compatibile" JSON come:

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

questo è un esempio di come si dovrebbe inizializzare il 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" } 
}); 

Quando si tratta di valori di data, è IMO la pratica migliore per attivare il formato di data Javascript per JSON Converter (vale a dire i valori di data saranno rendono ed come new Date(123123123) invece del formato predefinito "2009-04-16T00: 00: 00Z"), quindi non devi preoccuparti del formato della data o del fuso orario. È possibile farlo configurando nel vostro graal-app/conf/Config.groovy:

grails.converters.json.date = 'javascript' 

Ho anche implementato la funzionalità lato server per il plugin filtro griglia, varie combinazioni di combo box implementazioni (con completamento automatico remoto), alberi, moduli ecc. Se vuoi vedere altro codice di esempio, fammi sapere.

ExtJS 3.0 (attualmente RC) si integra ancora meglio con Grails, dato che DataStores offre la possibilità di inviare dati al backend per ottenere la persistenza. L'approccio Ext.Direct fornisce nuove possibilità così :-)

+0

Questa è un'ottima informazione. Molte grazie! –

Problemi correlati