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