我在玩Grails 3,特别是REST Api支持功能。Grails 3 gson视图和域类模板
新功能之一(来自2.5.5)是新的gson视图。
我试图按照documentation,但我的模板似乎被忽略。
我所做的github可我的样本项目,但重要的位在这里:
我UrlMapping
:
"/books"(resources: "book")
我Book
域类:
class Book {
String title
static constraints = {
title(blank: false)
}
}
从我BookController
:
def show(Book book) {
respond new Book(id: 1, title: "Foo bar")
}
我show.gson
:
model {
Book book
}
json g.render(book)
最后,我book/_book.gson
:
json {
title "Book Template"
}
我在浏览器中看到这个设置是什么:
{"title":"Foo bar"}
我去寻找网上的一些例子和发现this one
这使我相信,Grails的应该忽视或绕过我的show.gson
和只呈现我的_book.gson
,但情况并非如此。我尝试删除我的show.gson
,但后来我得到了一个空白页。
Grails documentation让我相信我的show.gson
应该呈现我的_book.gson
模板,但这种情况也没有发生。
我试过清洗和重新运行,但我得到了同样的结果。
我能够得到它使用一个完全合格的模板名称的工作:
“固定” show.gson
:
model {
Book book
}
json g.render(template: "/book/book", model: [book: book])
可行的,但不理想,而不是出了什么的文档。
我不知道我在做什么错在这里,我必须错过一些东西。
我很困惑,我的'Book'域名下'mochi.Book',所以我需要把我的意见在'意见/ mochi/book /',例如'views/mochi/book/_book.gson'?这是新的3.x?除非我有多个同名的域对象,并且需要命名空间,否则我从来不需要在包名下面放置视图。 – Townsfolk
我试着将'_book.gson'模板移动到一个软件包目录中,但没有奏效。 – Townsfolk
我编辑了答案,使其更加详细。我希望它可以帮助 –