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

标签 java spring spring-mvc freemarker

我想创建一个所有其他 View 页面都将继承的主模板。

所以主模板将有:

HEADER
--CONTENT--
FOOTER
  1. header 将选择性地显示(如果用户已登录)、用户名和其他用户对象属性。

  2. --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/

相关文章:

java - 非法参数异常 : Unknown entity: models using JPA in Play Framework 2

java - 端口号在 URL 中消失

java - MVC 应用程序中的服务是否应返回实体或实体列表

java - Spring 设置 java.io.File 属性使用 java.lang.String bean

c# - 如何使用通用存储库实现 ADO.NET?

java - 当我使用 IntelliJ 构建代码时出现错误

java - 从 CSV 文件读取数据时遇到问题

java - 一些客户在升级我的 Android 应用程序时遇到 java.lang.UnsatisfiedLinkError。我该如何解决?

java - JWT 实际上是如何与 Spring MVC 一起创建 token 和验证 token 的?

java - 让我的第一个 Spring webapp 工作