Я читал книгу "Окончательное руководство к Grails" (Rocher/Brown), а в главе 04 эта загадочная вещь, называемая "макет", появилась просто без объяснений. (И там нет "макета" в индексе. Насколько я знаю, он никогда не объяснял.)
Как система знает, чтобы "наследовать" страницы из layout/main.gsp? Нет ничего о "макетах" в индексе, и он, кажется, только что появился.
В своем примерном приложении, на простом сайте магазина, сопоставления URL-адресов для /homepage говорят
"/"(controller:"store")
и сохранить пустой контроллер хранилища "index"
package com.g2one.gtunes
class StoreController {
def index = {
}
}
просто сообщает об этом для отображения store/index.gsp
В магазине /index.gsp есть несколько строк HTML; макет не включается в любую директиву
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="layout" content="main">
<title>gTunes Store</title>
<g:javascript library="prototype"></g:javascript>
</head>
<body id="body">
<h1>Your online music store and storage service!</h1>
<p>Manage your own library, browse music and purchase new tracks as they become available</p>
</body>
</html>
Когда я запускаю образец, страница, показанная для "/", - это не просто этот простой HTML, это содержимое "layouts/main.gsp" с этой магией, встроенной в нее.
Я не вижу, как информация в layout/main.gsp применяется к странице, как элементы смешиваются. Я следил за книгой за страницей, и эта функциональность просто "появилась" без объяснений.