我想创建一个每个其他视图页面都将继承的主模板.
所以主模板将具有:
HEADER
--CONTENT--
FOOTER
>标题将可选地显示(如果用户已登录),用户名和其他用户对象属性.
> –CONTENT–是一个占位符,其他“继承”视图页面会将其内容注入其中.
所以我的问题是,这可能与freemarker有关吗?如果有,任何指导?
如何将用户对象从控制器操作传递到标头?理想情况下,对象将在每个视图页面以外的其他位置传递(以避免必须在每个视图页面上维护此代码).
最佳答案
是的,这是可能的.在我们的应用程序中,用户对象之类的东西存在于会话范围内,但这可能是freemarker有权访问的任何范围:
<#if Session.the_user?? && Session.the_user.loggedIn>
<#-- header code -->
#if>
您可以省略会话.和Freemarker将搜索给定变量名称的各种范围.
要注入内容,请在主模板中您希望视图页面放置其内容的位置包含此内容:
<#nested>
然后,视图页面声明它们对主模板的使用,如下所示:
<#import "/WEB-INF/ftl/path/to/template/master.ftl" as com>
<@com.template>
View page content
@com.template>