2016-03-07 62 views
0

我有一个Grails 2.4.x应用程序,其中〜80%的页面使用simple.gsp布局,其他页面都是根本不使用任何布局/模板的散列器。但他们不能使用simple.gsp,因为它的内容不适用于他们。在Grails GSP布局中使用其他布局

我有需要添加一个标题导航到所有这些页面(100%),并希望一个优雅的解决方案。理想情况下,我可以创建一个新的布局,比如awesome-header.gsp,其中包含header nav。然后:

  • 对于任何页面(再次〜20%),其使用simple.gsp布局,我只想让他们直接使用awesome-header.gsp;但后来...
  • 我只是以某种方式引用/导入/扩展simple.gsp(以某种方式)使用awesome-header.gsp;现在允许其它〜80%的网页使用新标题导航

让我们假设这是simple.gsp

<!DOCTYPE html> 
<html> 
    <head> 
     <title> 
      <g:layoutTitle default="Some App" /> 
     </title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <!-- Lots of stuff --> 
     <g:layoutHead /> 
     <!-- Lots of stuff --> 
    </head> 
    <body> 
     <!-- Lots of stuff --> 
     <div id="page-content"> 
      <g:layoutBody /> 
     </div> 
     <!-- Lots of stuff --> 
    </body> 
</html> 

而且让我们假装这是awesome-header.gsp

<%@ page contentType="text/html;charset=UTF-8" %> 
<html> 
    <head> 
     <title></title> 
    </head> 

    <body> 
     <script id="awesome-header-bootstrap" src="/awesome-header/awesome-header-bootstrap-1.0.js"><script> 
     <g:layoutBody /> 
    </body> 
</html> 

漂亮的准系统。所有我需要这个awesome-header.gsp布局要做的是在<body>元素的顶部包含一个JS右边。为了这个问题的目的,这个JS脚本是“魔术”,并为我神奇地提取标题导航。

  • 如何可以引用/进口/扩展simple.gsp使用awesome-header.gsp
  • 我不想awesome-header.gsp覆盖任何titleheader内容(无论是内部simple.gsp或在任何掉队页的定义)

任何想法我怎么能做到这一点的设置?

回答

1

如果我很明白,你想simple.gsp真棒,header.gsp之间的层次结构。所以你可以看看这个link来帮助你做到这一点。

的其他解决办法,也许比较容易,因为没有很多的修改要做的,就是用模板:

  • 把所有的HTML/JS关系到你真棒头模板内码(让说_awesome-header.gsp,在“_”是很重要的)
  • 简单地说该行的“简单”布局内部,并没有连接到你的“简单”布局中的所有其他页面中:<g:render template='awesome-header'/>