所以看起来Grails的GSP没有包含标签(如果我错了,请纠正我)。最接近“包含”的是使用render tag。还有include plugin。
在我的情况下,我有一个经典的左上 - 中 - 右 - 底页面。顶部标题或左侧将包括导航。中间是内容。右侧可能包含广告。在我的应用程序的JSP版本中,除了中间的每个窗格都在他们自己的JSP中。然后我将(使用<jsp:include/>
)各种面板包含到我的页面中。这是GSP中的正确方法吗?
在GSP中实现这一目标的首选模式是什么?
答案 0 :(得分:3)
您可能希望使用grails提供的布局功能(使用SiteMesh),而不是按视图导入或呈现窗格。如果您要对所有网页(即菜单/内容/广告)应用相同的布局,则只需修改grails-app/views/layouts/main.gsp
即可获得所需的网页元素,然后<g:layoutBody/>
标记将被填充在您的控制器呈现的常规视图中。默认情况下提供main.gsp
布局,它是所有(脚手架和生成的)视图的默认布局。
如果您需要某些网页来展示广告而其他网页没有这些广告,则您需要在grails-app/views/layouts
中创建新的版面(例如main-ads.gsp
)。然后,在您希望获得广告的视图中,在<head></head>
中,您将使用<meta name="layout" content="main-ads.gsp"/>
设置布局。
答案 1 :(得分:1)
从Grails 1.1开始,现在有一个<g:include> tag
几乎可以完全满足您的需求。
查看上面的选项重新布局/模板仍然有意义,因为在大多数情况下它们会更有效。
答案 2 :(得分:0)
你是正确的,渲染标签可以完成你想要做的事情。尝试使用模板,关键是用初始下划线命名它们。这个blog post应该会有所帮助。