我在玩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
我編輯了答案,使其更加詳細。我希望它可以幫助 –