2009-06-03 20 views
8

¿Alguien ha desarrollado una aplicación Grails utilizando extjs como interfaz? ¿Hay algún inconveniente o problema que te gustaría compartir?¿Experiencia usando extjs con griales?

Parece que el formato JSON generado por Grails por defecto es bastante diferente de lo que extjs espera, pero ¿es solo una cuestión de personalizar el JSON en el lado de los griales?

Respuesta

13

Estoy usando la combinación Grails + ExtJS mucho y es bastante fácil de implementar. La salida JSON para rejillas se puede lograr fácilmente haciendo algo como esto en sus controladores:

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

esto producirá "Ext-compatible" JSON como:

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

este es un ejemplo de cómo se debe inicializar el 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" } 
}); 

Cuando se trata de valores de fecha, es la mejor práctica de la OMI para que el formato de las fechas de JavaScript JSON para el convertidor (es decir, los valores de fecha se hacen ed como new Date(123123123) en lugar del formato predeterminado "2009-04-16T00: 00: 00Z"), por lo que no tiene que preocuparse por el formato de fecha o las cosas de la zona horaria. Usted puede hacer esto mediante la configuración en su griales-app/conf/Config.groovy:

grails.converters.json.date = 'javascript' 

También he implementado la funcionalidad del lado del servidor para el plugin de filtro de rejilla, varias combinaciones de implementaciones de cuadro combinado (con autocompletado remoto), árboles, formularios, etc. Si desea ver más código de ejemplo para eso, hágamelo saber.

ExtJS 3.0 (actualmente RC) se integra aún mejor con Grails, ya que las DataStores ofrecen la opción de enviar datos de vuelta al servidor para que persistan. El enfoque Ext.Direct ofrece nuevas posibilidades, así :-)

+0

Esta es una gran información. ¡Muchas gracias! –