【问题标题】:How to call FreeMarker directive from ftl template directly?如何直接从 ftl 模板调用 FreeMarker 指令?
【发布时间】:2016-07-21 17:56:57
【问题描述】:

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

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


详细问题: 它是 Spring MVC Web 应用程序,其视图使用 FreeMarker 编写,根本没有 Java 配置,我只有 FreeMarkerConfigurerFreeMarkerViewResolver bean 在 root-context.xml 中正确定义和配置。

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

谢谢

【问题讨论】:

    标签: java spring model-view-controller freemarker


    【解决方案1】:

    你可以把你常用的指令和函数收集成my-commons.ftl

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

    然后在您的模板中:

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

    【讨论】:

    • 感谢您的回复!这是否需要将指令实例添加到 View 模型或将其定义为 xml 配置中的共享变量?还是应该按照您描述的方式工作,而无需任何其他配置?
    • 它应该可以在没有任何配置的情况下工作,因为导入的模板本身指向要实例化的类。
    • 谢谢,这真的很有用。然而,由于一些限制,我以不同的方式实施了解决方案,但受到您的意见的启发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2012-10-13
    • 2021-08-21
    • 2023-04-08
    • 2016-05-17
    • 1970-01-01
    • 2010-11-24
    相关资源
    最近更新 更多