Grails支持一些不同的方法来产生XML和JSON响应. 第一个是通过 render 方法.
render方法可以传递一个代码块来实现XML中的标记生成器:def list = {
def results = Book.list()
render(contentType:"text/xml") {
books {
for(b in results) {
book(title:b.title)
}
}
}
}
这段代码的结果会像这样:<books>
<book title="The Stand" />
<book title="The Shining" />
</books>
注意,你必须小心的是避免使用标记生成器带来的命名冲突. 例如,这段代码会产生一个错误:def list = {
def books = Book.list() // naming conflict here
render(contentType:"text/xml") {
books {
for(b in results) {
book(title:b.title)
}
}
}
}
问题在于,这里的局部变量 books, Groovy会把它当做一个方法来调用.