在Grails中,如何组合视图的头标记和模板?

时间:2017-03-08 22:03:51

标签: grails grails-plugin

我正在创建一个包含模板的Grails插件。我们的想法是开发人员可以调用并获取我在模板中构建的所有渲染功能。

我面临的问题与视图和模板的头标记有关。目前,插件中的模板具有带有多个JS文件的<head>标记。如果另一个Grails项目的开发人员决定使用<g:render/>并调用我的模板,那么视图的head标记将被模板的head标记替换。

有没有办法将两者结合起来?基本上,如果view.gsp有一个head标签,我自己的模板(从另一个插件中提取)有一个head标签,我希望它们能够合并。

1 个答案:

答案 0 :(得分:0)

从此 http://docs.grails.org/3.1.1/guide/theWebLayer.html#layouts

它表明您可以拥有模板的头标记,并且视图只要存在:

<g:layoutHead />

位于模板的头部,用于加载视图的头部

  

8.2.4使用Sitemesh的布局

     

创建布局   Grails利用装饰引擎Sitemesh来支持视图布局。布局位于grails-app/views/layouts目录中。一个典型的

<html>
    <head>
       <title><g:layoutTitle default="An example decorator" /></title>
        <g:layoutHead />
    </head>
    <body onload="${pageProperty(name:'body.onload')}">
        <div class="menu"><!--my common menu goes here--></div>
        <div class="body">
            <g:layoutBody />
        </div>
    </body>
</html>
  

关键元素是layoutHead, layoutTitle and layoutBody标签调用:

layoutTitle - outputs the target page's title
layoutHead - outputs the target page's head tag contents
layoutBody - outputs the target page's body tag contents