Подтвердить что ты не робот

Есть ли хорошие учебные пособия для использования sitemesh в приложении grails?

Я довольно опытный разработчик Grails, но большую часть моего опыта использовал grails для обслуживания JSON/XML для гибкого приложения и некоторых относительно простых HTML-сайтов.

Я погружался глубже в использование интеграции sitemesh в grails, и я немного стараюсь найти лучшие практики для некоторых более сложных конфигураций, и мне любопытно, есть ли хорошие учебники или примеры там. оригинальный сайт Sitemesh не так полезен, поскольку теги, о которых он говорит, непосредственно не отображаются в grails.

В поиске Google в основном отображаются старые почтовые рассылки и некоторые материалы для ванильного ситэмеша, которые помогают мне двигаться немного дальше, но это много проб и ошибок.

Я полностью понимаю, как работают основные шаблоны g: layoutTitle, g: layoutHead и g: layoutBody. Это легко и хорошо документировано.

Виды вещей, которые я хотел бы увидеть для примеров:

4b9b3361

Ответ 1

Ну, я могу немного ответить:

Ваш первый и третий вопросы связаны друг с другом, поскольку вы не можете связать макеты с помощью метатега.

На вашей последней странице должен быть метатег, как вы предлагаете, но если вы хотите наложить макет поверх другого макета, вы помещаете ag: applyLayout тег в верхней части дочернего макета, указывая на родителя.

В вашем edit.gsp у вас будет:

<meta name="layout" content="editTemplate" />

а в editTemplate.gsp:

<g:applyLayout name="baseTemplate" >
<!-- the html for the editTemplate -->
</g:applyLayout>

поэтому edit.gsp будет использовать editTemplate.gsp, который будет использовать baseTemplate.gsp в качестве базовой компоновки. Вы можете связать их по мере необходимости.

Я вообще не использовал g: pageProperty, поэтому я не могу бросить вам лучшие примеры, извините.

Ответ 2

g: pageProperty - очень мощная, но очень плохо документированная вещь. Скажем, в моем макете я указываю, где разместить некоторый контент следующим образом:

<html>
<body>
<g:pageProperty name="page.header" />
</body>

Теперь на моей странице я могу указать некоторый контент:

<content tag="header">
<!-- header -->
</content>

Sitemesh примет тег контента, независимо от фактической позиции в HTML-странице страницы, и поместите его туда, где он должен идти в потоке макета.

Еще лучше, если в моей странице я создаю шаблон, который также указывает область содержимого с тегом "header", он перезапишет первое объявление, и это будет содержимое шаблона, которое будет отображаться в окончательном макете.

Ответ 3

Sitemesh вместе с Grails - очень мощная функция. Чем больше я его использую, тем больше мне это нравится. Вы можете украсить любую часть нашего веб-сайта: вы можете иметь макет для сообщений об ошибках, всплывающих подсказок, новостных лент, комментариев и т.д. И т.д. Просто обратите внимание, что вы можете делать это даже на своих страницах и иметь несколько уровней оформления (нет <content> ):

/view/layout/inline-error-message.gsp

<span class="errorMessageInSomeFancyBox">
    <span class="errorIcon"></span>
    <g:layoutBody />
<span>

/views/book/create.gsp

<%-- let decorate our error message with some fancy box --%>
<g:applyLayout name="inline-error-message">${some.error.message}</g:applyLayout>

Ответ 4

Смотрите приложение Rabbtor Showcase для нескольких очень хороших примеров на

  • создание вложенных макетов
  • шаблоны рендеринга
  • применение макетов к определенным частям страницы

. Это приложение является демонстрацией нашего инструмента Rabbtor, который позволяет использовать GSP вне Grails, но части, связанные с Sitmesh, также действительны для Grails.