我刚刚开始使用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}.)
我想你可能会误解Grails模板是什么.将模板视为可重用的片段.模板是一个以下划线开头的GSP,就像_menu.gsp
您通常使用a标签在另一个GSP中渲染一样<g:render template="menu"/>
.
同时渲染视图和模板没有意义.它们在这一点上是相互排斥的.
您是否希望实施布局?如果是这样,请参阅docs或grails.org解释.
基本上,您的视图在视图的<meta name="layout" content="main">
标记中会有一个标记<head/>
- 这表示视图将与main
位于其中的布局一起网格化grails-app/views/layouts/main.gsp