所以看起来 Grails 的 GSP 没有包含标签(如果我错了,请纠正我)。最接近“包含”的是使用渲染标签。还有包含插件。
就我而言,我有一个经典的左上中右下窗格页面。顶部标题或左侧将包括导航。中间是内容。右侧可能包括广告。在我的应用程序的 JSP 版本中,除了中间的每个窗格都将位于它们自己的 JSP 中。然后,我会将<jsp:include/>
各种面板包含(使用)到我的页面中。这是普惠制中的正确方法吗?
在 GSP 中实现这一目标的首选模式是什么?
您可能希望使用 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"/>
。
从 Grails 1.1 开始,现在有一个<g:include> tag
几乎完全可以满足您的需求。
研究上述选项重新布局/模板仍然是有意义的,因为它们在大多数情况下会更有效。
你是正确的,渲染标签可以完成你想做的事情。尝试使用模板,关键是使用初始下划线命名它们。这篇博文应该会有所帮助。