2010-05-03 30 views
5

Ok, tôi có một ứng dụng rất đơn giản được tạo ra trong Grails. Tôi có một lớp được tạo ra miền (Person) và bộ điều khiển tạo ra nó, bằng cách sử dụng Grails tự động giàn giáo:Đầu ra JSON của một khung nhìn trong Grails

package contacts 

class PersonController { 

    def scaffold = Person 

} 

Bây giờ tôi muốn để có được một đại diện JSON của một đối tượng Person.

Tôi có phải thay đổi chế độ xem hoặc bộ điều khiển không? Và làm thế nào?

Cảm ơn bạn.

Trả lời

9

Thêm dòng sau để điều khiển của bạn:

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

này nên hỗ trợ cả hai giàn giáo của bạn và đầu ra JSON.

Bạn có thể truy cập vào giàn giáo như:

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

Bạn có thể truy cập vào danh sách Person như json với:

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

Có nhiều cách khác để làm điều đó quá, nhưng tôi như làm theo cách này để rời khỏi giàn giáo xung quanh để thử nghiệm.

+0

Tuyệt vời. Cảm ơn bạn cho câu trả lời chính xác và toàn diện của bạn;) – daliz

+0

Một chút quá phức tạp đối với tôi: bạn nên sử dụng 'static responseFormats = [" json "," html "]' trong bộ điều khiển của bạn và giữ mã được tạo như (như 'trả lời User.list (params) ... '). Không cần phải viết mã để xử lý các định dạng. Sự xấu hổ là chúng ta sẽ có thể sử dụng giàn giáo và json mà không cần phải tạo ra bất kỳ mã điều khiển nào –

Các vấn đề liên quan