在之前的2个示例中,都没有指定哪个 view 用于渲染。因此,Grails怎么知道哪个 view 被选取?
答案在于规约。
对于action:class BookController {
def show = {
[ book : Book.get( params.id ) ]
}
}
Grails 会自动查找位于 grails-app/views/book/show.gspview (事实上, Grails 会首先查找JSP,因为,Grails同样可以与 JSP一起使用).
假如,你想渲染其他view, render 方法在这里就能帮助你:def show = {
def map = [ book : Book.get( params.id ) ]
render(view:"display", model:map)
}
这种情况下,Grails将会尝试渲染位于 grails-app/views/book/display.gsp的view。
注意,Grails自动描述位于book文件夹中的 grails-app/views路径位置的视图。
很方便,但是,如果你拥有某些共享的视图需要存取,作为替代使用:def show = {
def map = [ book : Book.get( params.id ) ]
render(view:"/shared/display", model:map)
}
在这种情况下,Grails将尝试渲染grails-app/views/shared/display.gsp位置上的视图。