Как удалить метатег для макета? - PullRequest
0 голосов
/ 12 января 2011

Я определил макет 'mainTemplate' для моего приложения Grails.Я использую g:layoutHead (поэтому мои страницы добавляют свой раздел заголовка к макетам).

Но когда я смотрю на источник своей домашней страницы, я все равно получаю метаданные для макета.

Хотя моя страница отображается в определенном шаблоне, но я полагаю, что grails должен был удалить эту метаинформацию.

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

Как мне удалить ее?Или я что-то здесь упускаю?

Ответы [ 2 ]

4 голосов
/ 12 января 2011

Если вы используете тег <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> из окончательного вида кажется в значительной степени ненужным, за исключением некоторых очень исключительных случаев (например, конфликт имен с "layout", или что у вас просто есть , чтобы предотвратить эти дополнительные ~ 35символы от отправки по проводам, что кажется довольно микрооптимизацией - мне это нравится).

0 голосов
/ 28 февраля 2014

Мне пришлось удалить тег <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, но если он делает валидатор счастливым, я могу перейти к более крупным и лучшим проблемам.

...