在Grails 2和3之间,layoutBody行为有所不同

时间:2017-10-07 00:11:44

标签: grails grails-2.0 grails3

我有一个组件化的单页面webapp,它非常依赖g:applyLayout,g:include和g:layoutBody。我有一个workbench.gsp聚合了许多较小的widgetFoo.gsp文件。它们的结构使得每个窗口小部件定义其各自的JS和CSS依赖关系,并且无论是单独呈现还是通过workbench.gsp与其他窗口小部件聚合在一起,它都是完全可用的。

我正在从grails 2.2.1 grails 3.1升级并遇到问题。我在任何文档,堆栈溢出或论坛中都找不到任何解释。

以下代码的行为有很大不同,具体取决于我使用的Grails版本。

workbench.gsp

<html>
<head>
    <meta name="layout" content="workbench" />
    <title>Workbench TEST GSP</title>
</head>

<body>
    <h1>Workbench</h1>

    <div>
        <g:applyLayout name="body-only">
            <g:include
                    controller="workbench"
                    action="w1"
            />
        </g:applyLayout>
    </div>
</body>
</html>

布局/ workbench.gsp

<html>
<head>
  <title><g:layoutTitle default="Heavy Meta"/></title>
    <g:layoutHead/>

</head>

<body>
    <g:layoutBody/>
</body>

</html>

布局/身体only.gsp

<g:layoutBody/>

widget1.gsp

<html>
    <head>
        <title>W1 - Grails 2 does not render this during layoutBody but Grails 3 does</title>
    </head>
    <body>
        <h1>I am widget #1 - Hear me Roar!</h1>
    </body>
</html>

Grails 2产生了这个:

<html>
<head>
  <title>Workbench TEST GSP</title>
    <meta name="layout" content="workbench">
</head>

<body>
    <h1>Workbench</h1>

    <div>
        <h1>I am widget #1 - Hear me Roar!</h1>
    </div>

</body>
</html>

Grails 3产生了这个:

<html>
<head>
    <meta name="layout" content="workbench">
    <title>Workbench TEST GSP</title>
</head>

<body>
    <h1>Workbench</h1>

    <div>
        <title>W1 - Grails 2 does not render this during layoutBody but Grails 3 does</title>
        <h1>I am widget #1 - Hear me Roar!</h1>
    </div>

</body>
</html>

在这个简单的例子中看起来很小,但是,当我在页面上放置多个小部件时,它会变得更糟。当他们的头部元素包括并且ONE和TWO具有重叠的依赖关系时,所有的地狱都会破裂。所以,我认为我会首先将问题呈现在最基本的形式中并从那里开始。

任何见解?

0 个答案:

没有答案