在多个 freemarker 模板中使用常量

Using a constant in multiple freemarker templates

我正在使用 Freemarker 模板生成 HTML。我在几个模板中重复了这一行:

<link href="/css/main.css?v=${css_version}" rel="stylesheet">

我希望能够为 css_version 指定一次值,并在我的所有模板中使用它。我该怎么做?

可能是这样的:

Configuration cfg ...
...
cfg.setSharedVariable("css_version", "1.2.3");

请注意,您应该在设置单例 Configuration 实例的地方执行此操作,稍后调用 setSharedVariable 不是线程安全的。因此,如果 css_version 必须在不重新创建 Configuration 的情况下进行更改,那么只需使用自定义 TemplateScalarModel 实现来代替 String,该实现从某个线程安全源读取版本号。 (也就是说,就模板而言,共享值的值可以随时间变化,即使实际的共享变量对象没有被替换。)