Freemarker:从模板文件(* .ftl)调用静态util方法

Geo*_*met 3 freemarker

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

<p>You selected ${selectionString}.</p>
<p>${StringUtils.capatilize(selectionString)} is great.</p>
Run Code Online (Sandbox Code Playgroud)

我能以某种方式进口 org.apache.commons.lang3.StringUtils吗?

Eri*_*han 9

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

BeansWrapper wrapper = new BeansWrapper(new Version(2,3,27));
TemplateModel statics = wrapper.getStaticModels();
model.addAttribute("statics", statics);
Run Code Online (Sandbox Code Playgroud)

然后,在您的.ftl文件中,如下定义类:

<#assign YourUtilClass=statics['com.springboot.util.YourUtilClass']>
Run Code Online (Sandbox Code Playgroud)

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

${YourUtilClass.yourMethod(someParams)}
Run Code Online (Sandbox Code Playgroud)


dde*_*any 4

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

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