2010-05-03 9 views
5

Ok, tengo una aplicación muy simple creada en Grails. Tengo una clase generada dominio (persona) y su controlador generado, utilizando los griales automáticas andamio:Salida JSON de una vista en Grails

package contacts 

class PersonController { 

    def scaffold = Person 

} 

Ahora me gustaría conseguir una representación JSON de un objeto Person.

¿Debo cambiar la vista o el controlador? ¿Y cómo?

Gracias.

Respuesta

9

Añadir lo siguiente a su controlador:

def list = { 
    params.max = Math.min(params.max ? params.int('max') : 10, 100) 
    def personList = Person.list(params) 
    withFormat { 
     html { 
      [personInstanceList: personList, personInstanceTotal: Person.count()] 
     } 
     json { 
      render personList as JSON 
     } 
    } 
} 

Esto debería apoyar tanto el andamiaje y la salida JSON.

Se puede acceder a los andamios como:

http://localhost:8080/contacts/person/list

Puede acceder a la lista Persona como JSON con:

http://localhost:8080/contacts/person/list?format=json

Hay otras maneras de hacerlo, pero yo como hacerlo de esta manera para dejar el andamio alrededor para la prueba.

+0

Genial. Gracias por su respuesta precisa e integral;) – daliz

+0

Un poco demasiado complejo para mí: en su lugar, debe usar 'static responseFormats = [" json "," html "]' en su controlador y mantener el código generado como está (como 'responder User.list (params) ... '). No es necesario escribir código para manejar formatos. La pena es que deberíamos poder usar andamios Y json sin tener que generar ningún código de controlador –

Cuestiones relacionadas