【问题标题】:Freemarker: call a static util method from a template file (*.ftl)Freemarker:从模板文件 (*.ftl) 调用静态 util 方法
【发布时间】:2016-08-22 14:47:43
【问题描述】:

在 Freemarker FTL 文件中,我想调用 StringUtils.capatilize(myString)。例如:

<p>You selected ${selectionString}.</p>
<p>${StringUtils.capatilize(selectionString)} is great.</p>

我可以以某种方式导入 org.apache.commons.lang3.StringUtils吗?

【问题讨论】:

    标签: freemarker


    【解决方案1】:

    首先,将这些代码添加到您的Controller

    BeansWrapper wrapper = new BeansWrapper(new Version(2,3,27));
    TemplateModel statics = wrapper.getStaticModels();
    model.addAttribute("statics", statics);
    

    然后,在您的 .ftl 文件中,像这样定义类:

    <#assign YourUtilClass=statics['com.springboot.util.YourUtilClass']>
    

    (['']中包含的路径是类的路径)
    最后,您可以像这样访问您的静态方法:

    ${YourUtilClass.yourMethod(someParams)}
    

    【讨论】:

    • 效果非常好! 2 个附加说明: 1 - 访问表达式中的静态方法时不要换行到 ${}&lt;#if Util.booleanCheck(field)&gt;。 2 - 你的类和方法应该是public
    【解决方案2】:

    你不能#import一个类,只能是其他模板。

    请注意,您可以使用#assign StringUtils=statics['org.apache.commons.lang3.StringUtils'] 获得类似的结果,只要将objectWrapper.getStaticModels() 作为statics 添加到Configuration 中的共享变量集或将其添加到数据模型中。

    【讨论】:

      猜你喜欢
      • 2021-08-21
      • 2015-09-11
      • 2016-07-21
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 1970-01-01
      • 2012-05-22
      • 1970-01-01
      相关资源
      最近更新 更多