freemarker with spring - 如何将全局数据绑定到模板?

freemarker with spring - how to bind global data to a template?

我想用 spring mvc 和 freemarker 创建一个小项目。

我已经创建了一个小模板和布局:

模板:

<#import "layout/defaultLayout.ftl" as layout>
<@layout.myLayout>
  <div><h1>Hello Dude</h1></div>
</@layout.myLayout>

布局:

<#macro myLayout>
  <html>
    <body>
            <!-- menu -->

            <!-- content -->
            <#nested/>
    </body>
  </html>
</#macro>

我现在的问题: 我如何创建动态值(可能是 bean 数据)? 我不想在每个控制器操作中添加数据。 将此类数据放入不特定于控制器操作的完整布局的好的解决方案是什么?

我找到了自己的解决方案。 我需要像这样使用 ControllerAdvice 注释和 ModelAttribute 注释:

@ControllerAdvice
public class LayoutMenu {
    @ModelAttribute("foo")
    public String initMenu() {
        return "Hello Bar";
    }
}

这解决了我的问题。