在 Grails GSP 布局中使用其他布局

Using other layouts inside a Grails GSP layout

我有一个 Grails 2.4.x 应用程序,其中约 80% 的页面使用 simple.gsp 布局,而其他页面都是不使用任何 layout/templating 根本。但他们不能使用 simple.gsp,因为它的内容不适用于他们。

我需要向所有这些页面添加 header 导航 (100%),并且想要一个优雅的解决方案。理想情况下,我可以创建一个包含 header 导航的新布局,例如 awesome-header.gsp。那么:

假设这是 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 脚本是 "magic" 并为我神奇地获取 header 导航。

关于如何完成此设置的任何想法?

如果我很好理解,你想要一个介于 simple.gspawesome-header.gsp 之间的层次结构。所以你可以看看这个 link 来帮助你做到这一点。

另一种解决方案可能更简单,因为不需要做很多修改,那就是使用模板:

  • 将与 awesome-header 相关的所有 HTML / JS 代码放入模板中(比如说 _awesome-header.gsp,'_'很重要!)
  • 只需将该行放入您的 'simple' 布局和未连接到您的 'simple' 布局的所有其他页面内:<g:render template='awesome-header'/>