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

时间:2009-08-04 05:32:58

标签: grails groovy templates gsp

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

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

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

然而,无论我做什么,grails都试图读取页面“home.gsp”(然后是home.jsp),尽管我已经在渲染调用中使用“template”属性明确指定了索引。 / p>

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

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

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

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

1 个答案:

答案 0 :(得分:8)

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

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

您是否希望实施布局?如果是,see the docsthe grails.org explaination.

根据您的观点,您的视图会在视图的<meta name="layout" content="main">标记中显示<head/>标记,这表示该视图将与位于{的main版块一起网格化{1}}