0

我为我的 grails 应用程序定义了一个布局“mainTemplate”。我使用g:layoutHead(所以我的页面将它们的头部附加到布局中)。

但是当我查看主页的源代码时,我仍然会获得布局的元信息。

虽然我在定义的模板中呈现了我的页面,但我认为 grails 应该删除了这个元信息。

http://grails.org/doc/1.3.x/ref/Tags/layoutHead.html

如何删除它?或者我在这里错过了什么?

4

2 回答 2

4

如果您使用<meta>标签来定义布局,那么它不容易移除。但是,您可以<g:applyLayout>在视图中使用以避免使用<meta>标记。

<!-- a GSP view, e.g. views/foo/index.gsp -->
<g:applyLayout name="main"><!-- value for "name" is the same as what you'd use in the meta tag -->
  <html>
    <head><title>My Decorated Page</title></head>
    <body>
      Some content
    </body>
  </html>
</g:applyLayout>

本质上,您所做的是<meta>从视图中删除标签,然后用<g:applyLayout>.

诚然,这是很多工作。您需要更新所有视图,并且还可能更新脚手架视图src/templates(如果您正在使用脚手架)。老实说,<meta>从最终视图中删除标签似乎在很大程度上是不必要的,除了一些非常特殊的情况(例如,与“布局”的命名冲突,或者您只需要防止那些额外的约 35 个字符通过网络发送,这对我来说似乎很微优化)。

于 2011-01-12T15:23:07.500 回答
0

我最终不得不删除<meta>标签以符合我们的 WCAG 验证器1

我在我的一个标签库中添加了一个项目以方便使用。

def wcagValidLayoutHead = {
  def head = request["__sitemesh__page"].head
  out << head.replaceAll(/<meta .*name=['"]layout['"].*\/>/, '')
}

然后像这样使用它:

<head>
  <title><g:layoutTitle default="My Valid HTML Page"/></title>
  <my:wcagValidLayoutHead/>
</head>

这有点小技巧,我确信正则表达式可以提高速度,但它确实有效。


1:我不相信它实际上是无效的 HTML,但如果它让验证器满意,我可以继续处理更大更好的问题。

于 2014-02-27T21:21:08.737 回答