Я хочу создать основной шаблон, который наследует любая страница представления.
Таким образом, основной шаблон будет иметь:
HEADER
--CONTENT--
FOOTER
заголовок дополнительно покажет (если пользователь будет зарегистрирован), имя пользователя и другие свойства пользовательского объекта.
- СОДЕРЖАНИЕ - является заполнителем, что другое 'наследование' просматривает страницы, введет их содержание в.
Таким образом, мои вопросы, действительно ли это возможно с freemarker? Если так, руководство?
Как я передал бы пользовательский объект заголовку от моих действий контроллера? идеально объект был бы передан в куда-нибудь Кроме каждого просматривать страницу (чтобы избежать необходимости поддерживать этот код каждого просматривать страницу).
Да, это возможно. В наших приложениях такие вещи, как объект user, существуют в области видимости сессии, но это может быть любая область видимости, к которой имеет доступ freemarker:
<#if Session.the_user?? && Session.the_user.loggedIn>
<#-- header code -->
</#if>
Вы можете опустить Session.
, и Freemarker будет искать заданное имя переменной в различных областях видимости.
Чтобы внедрить содержимое, включите это в том месте главного шаблона, где вы хотите, чтобы страница представления разместила свое содержимое:
<#nested>
Страницы представления затем объявляют об использовании главного шаблона следующим образом:
<#import "/WEB-INF/ftl/path/to/template/master.ftl" as com>
<@com.template>
View page content
</@com.template>