如何直接从 ftl 模板调用 FreeMarker 指令?

How to call FreeMarker directive from ftl template directly?

小问题: 是否可以像这样直接从我的 ftl 调用实现 TemplateDirectiveModel 的 FreeMarker 指令 FormatDirective.java

<#assign formattedPhoneNumber = "com.myapp.utils.FormatDirective"?new(phoneNumber)>


详细问题: 它是 Spring MVC 网络应用程序,其视图是用 FreeMarker 编写的,根本没有 Java 配置,我只有 FreeMarkerConfigurerFreeMarkerViewResolver bean 在 root-context.xml.

我想避免 Java 配置(例如将模板添加到模型或共享变量)。 什么是正确的方法 - 通常 - 让 Java 指令工作?我似乎没有找到完整的教程或示例。

谢谢

您可以将常用的指令和函数收集到类似 my-commons.ftl:

的内容中
<#assign format = "com.myapp.utils.FormatDirective"?new()>
...

然后在您的模板中:

<#import "my-commons.ftl" as my>
...
<@my.format value=phoneNumber />