关于freemarker模板的建议,想要创建一个主模板

Bla*_*man 6 java spring freemarker spring-mvc

我想创建一个每个其他视图页面都将继承的主模板.

所以主模板将具有:

HEADER
--CONTENT--
FOOTER
Run Code Online (Sandbox Code Playgroud)
  1. 标题将可选地显示(如果用户已登录),用户名和其他用户对象属性.

  2. --CONTENT--是占位符,其他"继承"视图页面将注入其内容.

所以我的问题是,这可能与freemarker有关吗?如果有,任何指导?

如何将用户对象从控制器操作传递到标头?理想情况下,对象将在每个视图页面以外的其他位置传递(以避免必须在每个视图页面上维护此代码).

Pat*_*Pat 3

是的,这是可能的。在我们的应用程序中,诸如用户对象之类的东西存在于会话范围内,但这可以是 freemarker 可以访问的任何范围:

<#if Session.the_user?? && Session.the_user.loggedIn>
    <#-- header code -->
</#if> 
Run Code Online (Sandbox Code Playgroud)

您可以省略Session.,Freemarker 将在各个范围中搜索给定的变量名称。

要注入内容,请将其包含在主模板中您希望视图页面放置其内容的位置:

<#nested>
Run Code Online (Sandbox Code Playgroud)

然后视图页面声明它们对主模板的使用,如下所示:

<#import "/WEB-INF/ftl/path/to/template/master.ftl" as com>
<@com.template>
    View page content
</@com.template>
Run Code Online (Sandbox Code Playgroud)