我无法使用grails控制器"render"方法来使用显式模板

1 grails groovy templates gsp

我刚刚开始使用grails,我遇到了问题.

我有一个项目主页的"控制器"和"视图"(主页没有模型)

我调用了视图"index.gsp",并将其放在目录views/home中

但是,无论我做什么,grails都试图读取页面"home.gsp"(然后是home.jsp),尽管我已经在渲染调用中使用"template"属性显式指定了索引.

class HomeController {
    String someparameter = "xyzzy"
    def index = { 
        render(view:"home", template:"index")  // I also tried "index.gsp" and "home/index.gsp"
    }
}
Run Code Online (Sandbox Code Playgroud)

我想我可能正在使用"模板"属性错误,因为我只看到它用于无视图模板渲染的示例中.但是文档没有给出这样的限制.

有没有办法明确指定模板的名称?我只是陷入其中并将其重命名为"home.gsp",但我想了解出了什么问题.

(此应用程序中的主页没有"模型".Grails将使用控制器具有模型.在此示例中,您可以访问gsp模板中的"someparameter"$ {someparameter}.)

Col*_*ton 8

我想你可能会误解Grails模板是什么.将模板视为可重用的片段.模板是一个以下划线开头的GSP,就像_menu.gsp您通常使用a标签在另一个GSP中渲染一样<g:render template="menu"/>.

同时渲染视图和模板没有意义.它们在这一点上是相互排斥的.

您是否希望实施布局?如果是这样,请参阅docsgrails.org解释.

基本上,您的视图在视图的<meta name="layout" content="main">标记中会有一个标记<head/>- 这表示视图将与main位于其中的布局一起网格化grails-app/views/layouts/main.gsp