2010-05-03 6 views
5

Ok, ich habe eine sehr einfache App in Grails erstellt. Ich habe eine Domain erzeugt Klasse (Person) und dessen erzeugte Controller, mit dem automatischen Grails Gerüst:JSON Ausgabe einer Ansicht in Grails

package contacts 

class PersonController { 

    def scaffold = Person 

} 

Jetzt würde ich eine JSON-Darstellung einer Person Objekt erhalten möchte.

Muss ich die Ansicht oder den Controller ändern? Und wie?

Vielen Dank.

Antwort

9

Fügen Sie folgendes zu Ihrem Controller:

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 
     } 
    } 
} 

Dies sollte sowohl die Gerüste und die JSON-Ausgabe unterstützen.

Sie können auf das Gerüst wie:

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

Es gibt auch andere Möglichkeiten, es zu tun, auch, aber ich:

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

Sie die Personenliste als Json mit Zugriff als würde man es so machen, um das Gerüst zum Testen zu verlassen.

+0

Großartig. Vielen Dank für Ihre präzise und umfassende Antwort;) – daliz

+0

Ein bisschen zu komplex für mich: Sie sollten stattdessen 'static responseFormats = [" json "," html "]' in Ihrem Controller verwenden und den generierten Code behalten (wie 'antwort ') User.list (params) ... '). Sie müssen keinen Code schreiben, um mit Formaten umgehen zu können. Die Schande ist, dass wir in der Lage sein sollten, scaffold AND json zu verwenden, ohne irgendeinen Controllercode generieren zu müssen –