Шаблон, который мне нравится, использует свойство pageProperty следующим образом. В макете я ссылаюсь на свойство страницы примерно так:
макет gsp
<body id="${pageProperty(name: 'page.pageType')}">
<g:render template="/layouts/header" />
<g:layoutBody/>
<g:render template="/layouts/copyright" />
</div>
... и в разделе <head>
конкретной страницы gsp (я обнаружил, что он НЕ работает вне раздела head), я объявляю значение следующим образом:
Страница gsp
<head>
<meta name="layout" content="main"/>
<parameter name="pageType" value="homePg" />
</head>
Результирующий HTML
<body id="homePg">
... header, body and footer ...
</body>
Кроме того, я могу ввести значение из модели контроллера в pageProperty следующим образом:
Контроллер
def index() {
model: [modelPageType: 'adminPg']
}
Макет gsp (используя ту же компоновку, что и выше)
<body id="${pageProperty(name: 'page.pageType')}">
<g:render template="/layouts/header" />
<g:layoutBody/>
<g:render template="/layouts/copyright" />
</div>
Страница gsp
<head>
<meta name="layout" content="main"/>
<parameter name="pageType" value="${modelPageType}" />
</head>
Результирующий HTML
<body id="adminPg">
... header, body and footer ...
</body>